如何修改Python代码实现输出列表中重复元素的所有出现位置
实现思路
原代码的while逻辑找到第一个匹配元素就会终止运行,我们只需要遍历完整列表收集所有匹配的索引位置,再拆分输出第一个和剩余位置即可。
修改后的完整代码
numbers = [7,1,3,6,4,2,5,9,8,10,7] n = int(input("Enter a number from 1 to 10 to search for the number's position: ")) def find_all_positions(): # 存储所有匹配的1开头计数的位置,和原有代码的计数规则保持一致 positions = [] # 遍历列表同时获取索引和对应值 for idx, num in enumerate(numbers): if num == n: positions.append(idx + 1) return positions if n in numbers: print("Calculating position... (takes 9 years so wait)") all_pos = find_all_positions() print(f"第一个{n}的位置是:{all_pos[0]}") # 存在重复匹配时才输出其余位置 if len(all_pos) > 1: print(f"其余{n}的位置是:{','.join(map(str, all_pos[1:]))}") else: print("Number not found, next time enter a number from 1 to 10!")
核心修改说明
- 替换原有单次匹配终止的while循环,用
enumerate遍历全量列表元素,收集所有匹配项的位置 - 函数返回所有位置的列表,可灵活拆分首个结果和剩余结果
- 新增多结果判断逻辑,无重复匹配时不会输出冗余内容
输入7测试时,输出结果为:
第一个7的位置是:1
其余7的位置是:11
内容的提问来源于stack exchange,提问作者LocalDogeCoder
相关产品推荐
相关产品推荐

