我可以用又长又丑的方式做到这一点:
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]
