如何用Python列表推导式交替合并两个列表?解决语法错误
解决列表推导式实现两列表交替合并的语法错误
你写的代码语法错误是因为列表推导式的生成项不能直接写i,j——Python会将其视为一个未加括号的复合目标,导致语法解析失败。即使给i,j加上括号,得到的也会是元组组成的列表(比如[('2022-01-01','2022-01-31'), ('2022-02-01','2022-02-28')]),不符合你要的扁平化交替结果。
要实现交替合并,用嵌套的列表推导式即可:
list1 = ['2022-01-01','2022-02-01'] list2 = ['2022-01-31','2022-02-28'] big_list = [x for pair in zip(list1, list2) for x in pair]
运行后big_list的结果完全符合预期:
['2022-01-01','2022-01-31','2022-02-01','2022-02-28']
逻辑说明
外层推导式遍历zip(list1, list2)产生的每个元组对(比如第一个元组是('2022-01-01','2022-01-31')),内层推导式遍历元组里的每个元素,将它们逐个添加到结果列表中,从而实现交替合并的效果。
如果想要更简洁的写法,也可以借助itertools.chain(无需纯列表推导式时适用):
from itertools import chain big_list = list(chain.from_iterable(zip(list1, list2)))
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

