如何通过交替取元素的方式合并两个列表?
交叉合并两个列表(交替取元素)
需要将两个等长列表交叉合并,交替取出两个列表中的元素。示例如下:
char = ["A", "B", "C", "D", "E", "F", "G"] num = ["1", "2", "3", "4", "5", "6", "7"]
期望得到的合并结果:
result = ["A", "1", "B", "2", "C", "3", "D", "4", "E", "5", "F", "6", "G", "7"]
方法1:列表推导式 + zip
利用zip将两个列表的对应元素配对,再通过嵌套列表推导式展开每一对元素:
char = ["A", "B", "C", "D", "E", "F", "G"] num = ["1", "2", "3", "4", "5", "6", "7"] result = [item for pair in zip(char, num) for item in pair] print(result)
方法2:itertools.chain 扁平化处理
借助itertools.chain的from_iterable方法,直接扁平化配对后的元素序列,代码更简洁:
from itertools import chain char = ["A", "B", "C", "D", "E", "F", "G"] num = ["1", "2", "3", "4", "5", "6", "7"] result = list(chain.from_iterable(zip(char, num))) print(result)
方法3:手动循环实现(适合理解底层逻辑)
通过循环逐个交替添加两个列表的元素,逻辑清晰易懂:
char = ["A", "B", "C", "D", "E", "F", "G"] num = ["1", "2", "3", "4", "5", "6", "7"] result = [] for c, n in zip(char, num): result.append(c) result.append(n) print(result)
注:如果两个列表长度不一致,
zip会以较短列表的长度为准。若需保留较长列表的剩余元素,可改用itertools.zip_longest,并处理填充的None值。
内容的提问来源于stack exchange,提问作者Anglhz
相关产品推荐
相关产品推荐

