【问题标题】:Python List Comprehension With List of ListPython List 用 List 的 List 理解
【发布时间】:2021-02-24 16:50:39
【问题描述】:

我有一个列表列表(实际列表更长):

a = [[1, 2], [5, 8], [10, 4], [15, 9]]

我需要在列表理解中使用此列表。对于第一个循环,1 和 2 将用作 i 和 j。对于第二个循环,5 和 8 将用作 i 和 j。以此类推。

以下代码不正确,但我怎样才能使它工作?我不想拆分列表。非常少的计算成本很重要。

[some_work_with(i, j) for i, j in zip(a[][0], a[][1])]

有些作品可能是print(i, j)

【问题讨论】:

  • [some_work_with(i, j) for i, j in a]?如果a 已经是 2-tuples 或 2-lists 的列表,则根本不需要在其上使用 zip()

标签: python python-3.x list list-comprehension


【解决方案1】:

这里不需要zip,只需在迭代元素时解包即可

[some_work_with(i, j) for i, j in a]

【讨论】:

    【解决方案2】:
    def func(i,j):
        return [i-1, j+1]
    
    a = [[1, 2], [5, 8], [10, 4], [15, 9]]
    
    print ([func(x[0], x[1]) for x in a])
    

    输出:

    [[0, 3], [4, 9], [9, 5], [14, 10]]
    

    如果您愿意,也可以使用此语法:

    print ([func(i, j) for i, j in a])
    

    【讨论】:

      【解决方案3】:

      为什么不简单

      [some_work(pair[0], pair[1]) for pair in a]
      

      例如

      [f'i : {pair[0]} and j : {pair[1]}' for pair in a]
      

      这将导致:

      ['i : 1 and j : 2', 'i : 5 and j : 8', 'i : 10 and j : 4', 'i : 15 and j : 9']
      

      【讨论】:

        猜你喜欢
        • 2014-11-25
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-11
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多