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

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]

关于python - 一线四联 list ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51727255/

10-12 20:08