将列表连续数字替换为组内最小值或仅保留组内最小值
处理连续整数列表的两种实现方案
给定一个包含多组连续数字的整数列表,需要完成两种处理:
- 将每组连续数字的所有元素替换为该组的最小值
- 仅保留每组连续数字的最小值,删除组内其他元素
示例输入:
my_list = [1,2,3,4,6,7,8,9,11]
第一种处理结果:
result = [1,1,1,1,6,6,6,6,11]
第二种处理结果:
result = [1,6,11]
方案一:替换组内所有元素为最小值
遍历列表,维护当前连续组的最小值(即组的第一个元素),遇到连续元素就添加当前组最小值,遇到新组则更新最小值并添加:
my_list = [1,2,3,4,6,7,8,9,11] if not my_list: print([]) result = [] current_group_min = my_list[0] result.append(current_group_min) for i in range(1, len(my_list)): if my_list[i] == my_list[i-1] + 1: result.append(current_group_min) else: current_group_min = my_list[i] result.append(current_group_min) print(result) # 输出: [1,1,1,1,6,6,6,6,11]
方案二:仅保留每组最小值
遍历列表,只在新组开始时(当前元素与前一个不连续)添加元素,因为连续组的第一个元素就是最小值:
my_list = [1,2,3,4,6,7,8,9,11] if not my_list: print([]) result = [my_list[0]] for i in range(1, len(my_list)): if my_list[i] != my_list[i-1] + 1: result.append(my_list[i]) print(result) # 输出: [1,6,11]
内容的提问来源于stack exchange,提问作者John Mantios
相关产品推荐
相关产品推荐

