Python如何为非交替列表插入空值并拆分出两个目标列表?
Python实现列表拆分与缺失位置补全
问题说明
原列表如下:
['1','a', '2', 'b', '3', 'c', '4', 'd', 'e', '6', '7']
需要完成两个操作:
- 在缺失
'5'和'f'的位置插入空格字符串' ' - 将处理后的内容拆分为两个列表,预期输出:
list1 : ['1','2','3','4',' ','6','7'] list2 : ['a','b','c','d','e',' ',' ']
实现方案
方法一:针对性处理(适配当前列表结构)
如果明确知道原列表的结构规律,可以直接按顺序拆分并补全缺失项:
original_list = ['1','a', '2', 'b', '3', 'c', '4', 'd', 'e', '6', '7'] list1 = [] list2 = [] # 拆分前四组成对元素(1-a 到 4-d) for i in range(0, 8, 2): list1.append(original_list[i]) list2.append(original_list[i+1]) # 补全list1中缺失的'5',同时添加原列表剩余的'e'到list2 list1.append(' ') list2.append(original_list[8]) # 处理剩余的6、7,对应list2补空格 for num in original_list[9:]: list1.append(num) list2.append(' ') print(f"list1 : {list1}") print(f"list2 : {list2}")
方法二:通用匹配法(适配更多场景)
如果需要处理更灵活的列表结构,可先定义预期的数字和字母序列,再逐个匹配原列表元素,缺失项自动补空格:
original_list = ['1','a', '2', 'b', '3', 'c', '4', 'd', 'e', '6', '7'] # 定义预期的数字序列(1-7)和字母序列(a-f) expected_nums = [str(i) for i in range(1, 8)] expected_letters = [chr(ord('a') + i) for i in range(6)] list1 = [] list2 = [] ptr = 0 # 遍历原列表的指针 # 匹配预期的数字和字母对 for num, letter in zip(expected_nums, expected_letters): # 处理数字项 if ptr < len(original_list) and original_list[ptr] == num: list1.append(num) ptr += 1 else: list1.append(' ') # 处理字母项 if ptr < len(original_list) and original_list[ptr] == letter: list2.append(letter) ptr += 1 else: list2.append(' ') # 处理原列表中剩余的未匹配元素(此处为'7') while ptr < len(original_list): list1.append(original_list[ptr]) list2.append(' ') ptr += 1 print(f"list1 : {list1}") print(f"list2 : {list2}")
运行任意一段代码,都能得到预期的输出结果。
内容的提问来源于stack exchange,提问作者Student wahaha
相关产品推荐
相关产品推荐

