遍历Python整数列表标记正负时报str与int不可比较TypeError求解
错误原因
- 遍历逻辑使用错误:
for i in lst语法中,变量i获取的是列表的元素值而非索引下标,你后续使用lst[i]取值的逻辑完全不符合预期。 - 遍历过程中修改原列表导致异常:你在迭代原列表的同时持续往列表末尾追加字符串类型的标记,会让循环无限执行,当迭代到后续追加的字符串元素时,变量
i就变成了字符串类型,此时执行lst[i] > 0就会触发字符串与整数比较的类型错误。
修复方案
如果你需要生成与原列表元素对应的标记列表,建议新建独立列表存储结果,避免遍历过程中修改原列表:
lst = [-2, 1, -2, 7, -8, -5, 0, 5, 10, -6, 7] tag_lst = [] for num in lst: if num > 0: tag_lst.append("positive") elif num < 0: tag_lst.append("negative") else: tag_lst.append("zero") # 若需要将标记追加到原列表末尾,可单独执行extend操作 # lst.extend(tag_lst)
如果你确实需要通过索引遍历原列表,提前固定原列表长度避免循环异常:
lst = [-2, 1, -2, 7, -8, -5, 0, 5, 10, -6, 7] origin_length = len(lst) for i in range(origin_length): num = lst[i] if num > 0: lst.append("positive") elif num < 0: lst.append("negative") else: lst.append("zero")
内容的提问来源于stack exchange,提问作者Daniel Larson
相关产品推荐
相关产品推荐

