首页 > 解决方案 > 单行四倍列表

问题描述

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

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()但我只是想知道这是否可能。

我已经看到了相同的翻倍,而不是四倍。

标签: python

解决方案


您可以使用 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']

Another way to do it with a list comprehension is to use zip() function, but I find it less readable:

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

推荐阅读