每次迭代创建一个包含多个元素的Python列表

时间:2016-05-05 00:16:23

标签: python list python-3.x for-loop iteration

def f1(x): return [(x+1)*2-1, (x+1)*2-1]
def f2(x): return [(x+1)*2, (x+1)*2]

[[f1(i), f2(i)] for i in np.arange(3)]

这是生成list 3个列表对元素的代码:

[[[1, 1], [2, 2]], [[3, 3], [4, 4]], [[5, 5], [6, 6]]]

但是,我想通过 list循环一行获得for,如下所示。

[[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6]]

这就是多行的工作原理:

n = []
for i in np.arange(3):
    n += [f1(i), f2(i)]

这就像尝试每次编写2个元素,我不知道如何为一行代码实现+=。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

[x for i in np.arange(3) for x in [f1(i), f2(i)]]

使用包含两个for子句的列表推导。

答案 1 :(得分:0)

我可以这样做:

[f1(i) for i in np.arange(3)] + [f2(i) for i in np.arange(3)]

但还有更好的方法吗?