Python列表理解技巧

sas*_*ero 3 python list-comprehension list python-3.x

这可能是一个愚蠢的问题,但......

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)
Run Code Online (Sandbox Code Playgroud)

使用以下代码我的输出就像

[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]
Run Code Online (Sandbox Code Playgroud)

我理解为什么第二个看起来像这样,但有没有任何技巧可以让第一个列表理解?
PS
Python 3

Ana*_*mar 8

这是你想要的吗?

>>> list2 = [i for i in range(1, 5) for j in range(i)]
>>> list2
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
Run Code Online (Sandbox Code Playgroud)

诀窍是for在列表理解中以相同的顺序放置类似的循环(因为你不需要列表列表,所以不要创建它们).