我有一个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实现。
谢谢,
发布于 2019-11-19 18:41:25
在本例中,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]进行计算,从而得到一个错误。
https://stackoverflow.com/questions/58940749
复制相似问题