这也许是个愚蠢的问题但是..。
list = []
for i in range(1, 5):
for j in range(i):
list.append(i)
print(list)
list2 = [[i]*i for i in range(1, 5)]
print(list2)使用下面的代码,我的输出如下
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]我明白为什么第二张是这样的,但是有什么窍门能让我理解第一张清单吗?
P.S.
Python 3
发布于 2015-07-28 17:09:37
这是你想要的吗?
>>> list2 = [i for i in range(1, 5) for j in range(i)]
>>> list2
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]诀窍是在列表理解中按相同的顺序放置类似的for循环(由于不需要列表列表,所以不要创建这些列表)。
发布于 2015-07-28 17:09:31
[i for i in range(5) for j in range(i)]应该能做到这一点。您可以在列表理解中使用多个for。
发布于 2015-07-28 17:15:20
虽然我更喜欢双for,但您也可以使用reduce使用list2
list1 = reduce(lambda x, y: x + y, [[i] * i for i in range(1, 5)])
print list1
# [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]https://stackoverflow.com/questions/31682890
复制相似问题