这是一个绊脚石。如何创建以下序列:
x = 3,4,9,10, ..., 6k+3, 6k+4
所以我可以在其他地方使用它:
y = [something(i) for i in x]
有什么想法吗?我似乎无法想到一个。
答案 0 :(得分: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]
答案 1 :(得分:4)
def indicesGenerator(N):
for i in xrange(0, N, 6):
yield i+3
yield i+4
答案 2 :(得分: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))