【问题标题】:Create a Python List with Multiple Elements per Iteration每次迭代创建一个包含多个元素的 Python 列表
【发布时间】:2016-05-05 00:16:23
【问题描述】:
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)]

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

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

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

[[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 个元素,而我不知道如何为一行代码实现 +=。我该怎么做?

【问题讨论】:

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


    【解决方案1】:
    [x for i in np.arange(3) for x in [f1(i), f2(i)]]
    

    使用带有两个 for 子句的列表推导式。

    【讨论】:

    • 谢谢!我认为这是一行代码可以做到的。但是[x for x in [f1(i), f2(i)] for i in np.arange(3)] 也可以。这意味着for 订单是可选的?
    • 循环顺序很重要。你写的东西完全不同,可能不是你想要的。
    【解决方案2】:

    我可以这样做:

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

    但是有没有更好的方法?

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 2017-11-29
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      相关资源
      最近更新 更多