Skip to main content
 首页 » 编程设计

python之单行四倍列表

2025年05月04日13itcoder

我可以用又长又丑的方式做到这一点:

list_1 = ['AA','BB'] 
 
quadrupled = [] 
for i in list_1: 
    quadrupled.append(i) 
    quadrupled.append(i) 
    quadrupled.append(i) 
    quadrupled.append(i) 

或者更短,使用 .extend():

for i in list_1: 
    quadrupled.extend([i] * 4) 

但我想知道我是否可以使用列表理解来做到这一点。

quadrupled = [([i] * 4) for i in list_1] 

给我列表列表,但我想要平面列表。

我知道这种单行代码的可读性可能不太好,因为它可能需要使用一些嵌套,坚持使用 .extend() 可能会更好,但我只是想知道如果可能的话。

我看到同样的情况翻倍,而不是四倍。

请您参考如下方法:

您可以通过使用 2 个 for 循环的列表理解来完成此操作:第一个循环遍历输入列表的元素,第二个循环追加每个元素 4 次。这是一个我觉得非常可读的解决方案:

list_1 = ['AA','BB'] 
 
quadrupled = [i for i in list_1 for _ in range(4)] 
 
print(quadrupled) 
# ['AA', 'AA', 'AA', 'AA', 'BB', 'BB', 'BB', 'BB'] 

另一种使用列表理解的方法是使用 zip() 函数,但我发现它的可读性较差:

quadrupled = [i for j in zip(list_1,list_1,list_1,list_1) for i in j]