【问题标题】: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],并且会出现错误。