【发布时间】:2022-01-20 14:47:30
【问题描述】:
使用 Python,假设我有三个这样的列表:
list1 = ["ABC","JKL","STU"]
list2 = ["DEF", "MNO", "VWX"]
list3 = ["GHI", "PQR", "YZ0"]
我想循环列表,结果是这样的列表:
result = ["ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZ0"]
我可以通过一个简单的 for 循环使其工作:
result = []
for i in range(3):
result.append(list1[i])
result.append(list2[i])
result.append(list3[i])
因为我想使用这种方法的项目包括比三个更多的列表,所以我想使用更复杂的方法。我尝试使用itertools.chain() 函数,但它在移动到下一个之前分别循环每个列表:
result = []
for i in itertools.chain(list1, list2, list3):
result.append(i)
有没有办法让itertools.chain() 或其他一些功能一起工作?
【问题讨论】:
-
sum(zip(list1, list2, list3), tuple())。大家好,我刚刚发布了这个作为可能的“黑客”的演示。这并不意味着它是一个好的解决方案。实现这一点的正确方法是list(chain.from_iterable(zip(list1, list2, list3))) -
或者使用嵌套列表理解:
[i for t in zip(list1, list2, list3) for i in t] -
@Kolumbo 您能否检查一下
result的预期输出中是否有错字,第一个“JKL”可能不需要在那里。 (目前结果列表中有 10 个项目,但应该只有 9 个)。 -
Google 是您寻找答案的朋友 - thispointer.com/python-how-to-merge-two-or-more-lists
-
我不确定为什么这个问题会被如此严重地否决和关闭。这个问题不是很清楚,提问的人显然已经尝试过
itertools.chain()。