Python中拆分列表含X元素并合并相邻重复项问题求助
解决方案:拆分带X的元素并合并相邻重复项
第一步:拆分含X的元素
遍历原始列表,对每个元素做判断:如果包含字符X,就拆分成重复次数和目标值,生成对应数量的元素;否则直接保留原元素。
示例代码:
a = ['3X0', '0', '0.7596', '0.7525', '2X0', '0', '0', '0', '0.7543', '2X0.1', '0.1'] a_break = [] for item in a: if 'X' in item: # 拆分次数和值 count, val = item.split('X') # 生成对应数量的元素加入列表 a_break.extend([val] * int(count)) else: a_break.append(item) print(a_break) # 输出: ['0', '0', '0', '0', '0.7596', '0.7525', '0', '0', '0', '0', '0', '0.7543', '0.1', '0.1', '0.1']
第二步:合并相邻相同元素
遍历拆分后的列表,跟踪当前元素及其连续出现的次数,遇到不同元素时,将当前统计结果(次数>1时转为{count}X{val}格式,否则直接保留元素)加入最终列表,然后更新跟踪的元素和次数。
示例代码:
final_a = [] if not a_break: print(final_a) exit() current_val = a_break[0] current_count = 1 for val in a_break[1:]: if val == current_val: current_count += 1 else: # 处理当前统计项 if current_count > 1: final_a.append(f"{current_count}X{current_val}") else: final_a.append(current_val) # 更新跟踪项 current_val = val current_count = 1 # 处理最后一组元素 if current_count > 1: final_a.append(f"{current_count}X{current_val}") else: final_a.append(current_val) print(final_a) # 输出: ['4X0', '0.7596', '0.7525', '5X0', '0.7543', '3X0.1']
内容的提问来源于stack exchange,提问作者jamal manssour
相关产品推荐
相关产品推荐

