【发布时间】:2023-04-08 13:28:01
【问题描述】:
我有以下列表:
>>>> vec=[[1,2,3],[4,5,6],[7,8,9]]
要使用列表理解来展平列表列表,我可以使用:
>>>>[i for k in vec for i in k]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
但如果我写:
>>>> [i for k in vec]
[5,5,5]
>>>> [i for k in vec for k in k]
[5, 5, 5, 5, 5, 5, 5, 5, 5]
甚至更改vec=[[2,89,6],[34,7,10],[812,55,7],[76765,34,99]]
>>>> [i for k in vec]
[5,5,5,5]
>>>> [i for k in vec for k in k]
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
那么发生了什么?这些 5 是从哪里来的?
【问题讨论】:
-
i与您的列表无关,因为您不再将其用作循环变量。它仍然具有5的值,来自您对它所做的一些完全不相关的事情。 -
我不知道你是怎么得到这个结果的,但是 [i for k in vec] 给出一个错误:“i”未定义...
-
单独尝试
i- 在列表理解之外。打赌是 5。
标签: list python-3.x list-comprehension