Python长列表处理:插入相邻拼接项、按分块删除指定位置元素
长列表格式修改实现方案
以下实现均为线性时间复杂度,仅需遍历原列表一次,适配超长列表处理场景,无性能问题。
需求1:相邻元素间插入短横线拼接项
- 处理规则:遍历原列表所有相邻元素对,每两个相邻元素之间插入二者用
-连接的拼接项 - 实现代码:
def insert_concat_items(input_list: list[str]) -> list[str]: res = [] list_len = len(input_list) for idx in range(list_len - 1): res.append(input_list[idx]) res.append(f"{input_list[idx]}-{input_list[idx+1]}") # 补入原列表最后一个元素 if list_len > 0: res.append(input_list[-1]) return res # 测试 origin1 = ['chelsea','manchester','london','liverpool'] print(insert_concat_items(origin1))
- 运行输出:
['chelsea', 'chelsea-manchester', 'manchester', 'manchester-london', 'london', 'london-liverpool', 'liverpool']
需求2:每5个元素分块删除指定位置项
- 处理规则:将列表按每5个元素切为一个分块,删除每个分块内的第4、第5个元素,仅保留前3个元素
- 实现代码:
def trim_number_blocks(input_list: list[str]) -> list[str]: res = [] # 按步长5遍历,对应每个分块的起始位置 for idx in range(0, len(input_list), 5): # 切片取当前分块前3个元素,自动兼容末尾不足5个元素的边界情况 res.extend(input_list[idx:idx+3]) return res # 测试 origin2 = ['10','11','12','13','14','15','16','17','18','19','20','21','22'] print(trim_number_blocks(origin2))
- 运行输出(和预期结果完全一致):
['10', '11', '12', '15', '16', '17', '20', '21', '22']
内容的提问来源于stack exchange,提问作者batmorel
相关产品推荐
相关产品推荐

