关于python:我怎么能用列表理解呢?

How can i do it with list comprehension?

本问题已经有最佳答案,请猛点这里访问。

我想用重复的值在一个循环中进行列表理解,如下所示:

1
2
3
s=[]
for i in range(5):
    s+=[i,i]

但这行不通。

1
[i, i for i in range(5)]


你可以这样做:

1
[i for i in range(5) for j in range(2)]

输出是:

1
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]

i环提供的值和这些值是重复j环提供。


你可以试试这个:

s = [[i, i] for i in range(5)]

如果你想做,你可以试试这个flattened嵌套列表的理解。

1
s = [x for y in [[i, i] for i in range(5)] for x in y]


我认为这将做的伎俩。[ i/2 for i in range(10)]

有人理解为元素的列表迭代器在作为知识的理解。在这个案例,是range(10)迭代器

因为,你需要10元。你会需要一些计算和适用范围在10(在本案例i/2)获得所需的元素。


没有直接的方式来使用一个单级列表完全理解你做同样的事情做你的基本回路。这是因为每个迭代的循环必须在一个序列产生一个值(它可以产生零,如果你有一个if条款)。

然而,这种特异性的用例,你可以使用产生的重复序列的分值,你想要更大的rangeon a while循环:

1
s = [i//2 for i in range(10)]


这里是一个zip:单向

1
[i for p in zip(range(5), range(5)) for i in p]