这是一个笨蛋。如何创建以下序列:
x = 3,4,9,10, ..., 6k+3, 6k+4
所以我可以在其他地方使用它:
y = [something(i) for i in x]
有任何想法吗?我似乎想不出一个。
@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]
嗯,我最终只是这样做
def indicesGenerator(N):
for i in xrange(0, N, 6):
yield i+3
yield i+4
这里的问题是您的函数需要返回两个值,这意味着您将获得一个元组列表,而不是您想要的值的平面列表。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))