【问题标题】:list comprehension for empty list python 3?空列表python 3的列表理解?
【发布时间】:2019-11-19 18:34:18
【问题描述】:

我有一个 python 3 代码如下:

a = []
b = [[0] * len(a[0]) for _ in range(len(a))]

上面的代码可以正常工作,但是下面的代码不行:

a = []
m, n = len(a), len(a[0])

len(a[0]) 出现在两个代码中,为什么列表理解不通过IndexError: list index out of range

谢谢,

【问题讨论】:

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


    【解决方案1】:

    range(len(a)) 在这种情况下本质上是range(0),它是一个空范围:

    >>> list(range(0))
    []
    

    因为被迭代的集合是空的,理解永远不会运行,所以a[0]永远不会被评估。

    类似于此循环不打印任何内容:

    for _ in []:
        print("SOME TEXT!")
    

    [] 为空,因此for 循环永远不会迭代。

    但是,对于m, n = len(a), len(a[0]),无论a 的长度如何,都会运行a[0],因此会评估a[0],并且会出现错误。

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2017-04-01
      相关资源
      最近更新 更多