2

这是一个笨蛋。如何创建以下序列:

x = 3,4,9,10, ..., 6k+3, 6k+4

所以我可以在其他地方使用它:

y = [something(i) for i in x]

有任何想法吗?我似乎想不出一个。

4

3 回答 3

6

@JasonS的答案最易读,但这是一个很好的单行

def F(N):
    return (6*(i//2) + 3+(i%2) for i in xrange(N))

>>> list(F(10))
[3, 4, 9, 10, 15, 16, 21, 22, 27, 28]
于 2013-05-22T16:14:23.583 回答
4

嗯,我最终只是这样做

def indicesGenerator(N):
    for i in xrange(0, N, 6):
        yield i+3
        yield i+4
于 2013-05-22T16:48:38.127 回答
2

这里的问题是您的函数需要返回两个值,这意味着您将获得一个元组列表,而不是您想要的值的平面列表。itertools.chain救援!

from itertools import chain

def something(x):
    return 6 * x + 3, 6 * x + 4

x = [3, 5, 7]
y = list(chain.from_iterable(something(i) for i in x))
于 2013-05-22T16:19:33.433 回答