我正在努力理解此列表理解,但还有更多问题:
x = [[c for c in range(r)] for r in range(3)]
print(x)
>>>[[],[0],[0,1]]
据我了解,这将相应地细分:
x = []
for r in range(3):
for c in range(r):
x.append(c)
print(x)
>>>[0,0,1]
但是,我的解压缩版本没有返回列表列表,例如列表理解。 我最大的问题是:
1)在这种情况下range(r)会变成什么?
2)如何纠正我的for循环以使输出与列表理解相同?
3)为什么列表理解会列出它所做的列表?
答案 0 :(得分:4)
您的解压缩版本与列表理解的版本不同,它们不相同。等同于列表理解的是:
a = []
for r in range(3):
x = []
for c in range(r):
x.append(c)
a.append(x)
print(a)
>>> [[],[0],[0,1]]
请注意,在列表组合中,您每次迭代都创建一个新列表,而在解压缩的示例中,您只是将其追加到同一列表中。
您提供的解压缩版本的列表理解示例为:
x = [c for r in range(3) for c in range(r)]