我试图理解以下python代码片段:
lst = [[c for c in range(r)] for r in range(3)] #line1
for x in lst: #line2
for y in x: #line3
if y < 2: #line4
print('*', end='') #line5
我知道range(3)等函数本身的含义,但我不了解上下文。看到这段嵌套的代码有点复杂。“lst”的第一行最容易混淆。为什么第一条生产线会产生以下输出:
[[], [0], [0, 1]]
那么line2和line3是如何协同工作的呢?提前谢谢你的回答。欢迎提出任何意见!你知道吗
在嵌套列表理解中,r以值0开始,因此内部列表的计算结果为
[c for c in range(0)]
,即[]。当r为1时,其计算结果为[c for c in range(1)]
,即[0]。当c为2时,有[c for c in range(2)]
,即[0,1]。当这些元素在外部列表中生成时,它们将作为列表的列表元素返回。所以在lst
中有一个列表。你知道吗for循环然后在第2行中的每个列表上迭代。然后第3行遍历每个列表中的整数元素。你知道吗
回复
无论在哪里看到
[ ...for...]
,都有所谓的“列表理解”。这是一种基于元素的单行循环描述建立列表的方法。例如:以及
产生相同的列表
list1
和list2
在您的例子中,有两组
[]
和两个for
语句,因此在列表理解中有一个列表理解:因此结果不仅是一个列表,而且是一个嵌套列表。你知道吗回复
第2行遍历列表中的所有项
lst
。 但是这些项目中的每一个也是一个列表,因为您有一个嵌套的列表。因此,第3行遍历内部列表中的每个项。你知道吗代码段创建了一个列表列表,其中大小(以及项的实际值)取决于第一级列表中的索引。你知道吗
代码段与
相关问题 更多 >
编程相关推荐