RicardoM.Lu1 2024-02-21 18:11 采纳率: 80.6%
浏览 3
已结题

在python刷题时出现问题

在刷python相关题目时遇到问题,代码如下:

"""
取出列表内的偶数
"""
list_old = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# list_new = []


def list_while():
    """
    通过while循环取出列表中的偶数
    :return: 无返回值
    """
    list_new = []
    index = 0
    while index < len(list_old):
        if list_old[index] % 2 == 0:
            a = list_old.pop(index)
            list_new.append(a)
            index += 1
            continue
        else:
            index += 1
            continue
    print(f"通过while循环,取出偶数后新列表为{list_new}")


def list_for():
    """
    通过for循环取出列表中的偶数
    :return: 无返回值
    """
    list_new = []
    for abc in list_old:
        if list_old[abc] % 2 == 0:
            a = list_old.pop(abc)
            list_new.append(a)
        # else:
        #     print(f"不为偶数")
    print(f"通过for循环,取出偶数后新列表为{list_new}")


# list_while()
list_for()


错误如下:

Traceback (most recent call last):
  File "D:\lean_new\exercise20.py", line 43, in <module>
    list_for()
  File "D:\lean_new\exercise20.py", line 34, in list_for
    if list_old[abc] % 2 == 0:
IndexError: list index out of range




通过debug可知,for循环的函数list_new在添加了2,6,8(且取不到4)之后出现错误。while循环的函数可正常运行,且添加正确。
现在我的需求是通过for循环正常把偶数拿出来放到list_new中去.

  • 写回答

2条回答 默认 最新

  • 渴口可乐 2024-02-21 18:30
    关注
    
    for abc in list_old:
            if list_old[abc] % 2 == 0:
    

    循环出错了,你的循环时循环列表内容,所以abc已经是列表内容不能作为下标使用。

     
    
    def list_for():
        """
        通过for循环取出列表中的偶数
        :return: 无返回值
        """
        list_new = []
        for abc in list_old:
            if abc % 2 == 0:
              list_new.append(a)
            # else:
            #     print(f"不为偶数")
        print(f"通过for循环,取出偶数后新列表为{list_new}")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月29日
  • 已采纳回答 2月21日
  • 创建了问题 2月21日

悬赏问题

  • ¥15 用matlab或python实现多个表格合并单元格
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题