对于空列表python 3的列表理解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于空列表python 3的列表理解?相关的知识,希望对你有一定的参考价值。

我有如下的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

谢谢,

答案

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

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

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

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

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

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

然而,对于m, n = len(a), len(a[0]),无论a[0]的长度如何,都将运行a,因此对a[0]进行求值,会出现错误。

以上是关于对于空列表python 3的列表理解?的主要内容,如果未能解决你的问题,请参考以下文章

Python IZIP 列表理解返回空列表

深入理解Python列表(list)

Python 3 - 列表理解“如果不在列表中”

Python代码约定

Python中对于多个for循环和变量的列表理解

python 3列表推导式的的一点理解!