Python loopindex.py程序重复元素索引异常问题求助
问题描述
需要创建loopindex.py程序,实现以下功能:
- 将字符串类型的整数转换为整数类型
- 为列表中的每个数字加上其自身的索引位置
示例1:传入参数['5', '5', '5'],输出应为[5, 6, 7]
示例2:传入参数['4', '11', '0', '0', '1'],输出应为[4, 12, 2, 3, 5]
当前使用的代码:
import sys loop_list = sys.argv[1:] def loopindex(loop_list): index = [] for i in loop_list: y = loop_list.index(i) x = int(i) index.append(x + y) print(index) loopindex(loop_list)
运行示例2参数时,输出为[4, 12, 2, 2, 5],与期望结果不符,问题出在重复数字无法获取正确的自身索引。
问题原因与解决方法
错误原因
loop_list.index(i)方法只会返回第一个匹配元素的索引,当列表中有重复元素时,所有相同元素都会拿到第一个元素的索引,这就是示例2中两个0都使用索引2,导致第二个0计算结果错误的原因。
正确实现
要获取每个元素的真实索引,使用enumerate()函数即可,它能同时返回元素的索引和对应的值:
import sys loop_list = sys.argv[1:] def loopindex(loop_list): result = [] for idx, num_str in enumerate(loop_list): num = int(num_str) result.append(num + idx) print(result) loopindex(loop_list)
代码说明
enumerate(loop_list)遍历列表时,每次返回元组(当前索引, 当前元素值)- 直接获取当前元素的真实索引
idx,将字符串转成整数后与索引相加,添加到结果列表 - 无论元素是否重复,每个元素都能对应自己的正确索引,完美解决重复元素的索引问题
测试示例2参数会输出正确的[4, 12, 2, 3, 5],测试示例1的重复元素也会得到[5,6,7]的正确结果。
内容的提问来源于stack exchange,提问作者MMergler
相关产品推荐
相关产品推荐

