如何按奇偶位交叉规则合并两个Python列表?
Python实现按规则合并两个列表
方法一:切片+列表推导式
先提取两个列表中符合要求的元素片段,再交替合并:
list1 = ['a', 'b', 'c', 'd', 'e', 'f'] list2 = ['g', 'h', 'i', 'j', 'k', 'l'] # 取list1的第1、3、5个元素(对应索引0、2、4,步长为2) part1 = list1[::2] # 取list2的第2、4、6个元素(对应索引1、3、5,从索引1开始步长为2) part2 = list2[1::2] # 交替拼接两个片段的元素 list3 = [item for pair in zip(part1, part2) for item in pair] print(list3) # 输出: ['a', 'h', 'c', 'j', 'e', 'l']
方法二:循环索引添加
通过遍历索引直接选取目标元素,适合需要处理边界情况的场景:
list1 = ['a', 'b', 'c', 'd', 'e', 'f'] list2 = ['g', 'h', 'i', 'j', 'k', 'l'] list3 = [] # 按步长2遍历索引,每次取list1的当前索引元素和list2的下一个索引元素 for i in range(0, len(list1), 2): list3.append(list1[i]) # 确保list2存在对应索引的元素,避免越界报错 if i + 1 < len(list2): list3.append(list2[i + 1]) print(list3) # 输出: ['a', 'h', 'c', 'j', 'e', 'l']
说明
- 方法一更简洁,适合两个列表长度一致的场景;方法二更灵活,能处理其中一个列表更短的情况。
- 注意Python列表是0索引,第1个元素对应索引0,第2个对应索引1,这是切片和索引取值的核心依据。
内容的提问来源于stack exchange,提问作者zereay mulugeta
相关产品推荐
相关产品推荐

