【发布时间】:2022-01-02 07:15:20
【问题描述】:
我已经写了这段代码:
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
print([x**2 for x in l1 for y in l2])
输出这个:
[1, 1, 1, 1, 4, 4, 4, 4, 9, 9, 9, 9, 16, 16, 16, 16]
我的问题是,这个列表理解中发生了什么?为什么l1中的item数量乘以l2的长度?
【问题讨论】:
-
这能回答你的问题吗? List comprehension on a nested list?
-
你希望两个
for子句做什么? -
因为对l2的每个元素的理解都要经过l1,即l2次,所以一共有l2*l1的结果。
-
如果这让您觉得“奇怪”——您所期待的非奇怪结果是什么?
-
请注意,第二个列表是无用的,只有它的长度很重要。
print([x**2 for x in l1 for _ in range(4)])你会得到同样的结果
标签: python list for-loop list-comprehension