如何合并Python列表中的连续整数?示例:['a',1,2]转为['a',12]
合并列表中的连续整数
这是个很实用的列表处理需求,我来分享一个简洁的实现思路——核心就是遍历列表时跟踪连续的整数序列,遇到非整数时就把之前收集的整数拼接成一个数,再继续处理后续元素。下面是具体的实现方案:
通用实现函数
我们可以写一个通用函数来处理任意符合这种结构的列表:
def merge_consecutive_integers(lst): result = [] temp_nums = [] for item in lst: if isinstance(item, int): # 遇到整数,先转成字符串收集到临时列表(方便后续拼接) temp_nums.append(str(item)) else: # 遇到非整数,先处理之前收集的整数(如果有的话) if temp_nums: merged_num = int(''.join(temp_nums)) result.append(merged_num) temp_nums = [] # 把当前非整数元素加入结果列表 result.append(item) # 处理列表末尾可能剩下的整数序列(避免遗漏) if temp_nums: merged_num = int(''.join(temp_nums)) result.append(merged_num) return result
测试你的两个需求
需求1:转换['a',1,2]为['a',12]
直接调用函数就能得到结果:
test_list1 = ['a', 1, 2] print(merge_consecutive_integers(test_list1)) # 输出: ['a', 12]
需求2:处理给定列表得到目标输出
针对你提供的输入列表,调用函数后就能得到预期结果:
li = ['a',3,4,'b',6,'c',5,1] li = merge_consecutive_integers(li) print(li) # 输出: ['a', 34, 'b', 6, 'c', 51]
逻辑小说明
- 用
temp_nums临时存储连续的整数(转成字符串是为了方便直接拼接); - 每次遇到非整数元素时,先检查临时列表是否有内容,有就拼接成整数加入结果,再清空临时列表;
- 遍历结束后必须再检查一次临时列表,避免列表末尾的整数序列被遗漏;
- 这个方案兼容单个整数的情况(比如例子中的
6,会直接作为单个元素保留)。
内容的提问来源于stack exchange,提问作者Aman Pratap Singh
相关产品推荐
相关产品推荐

