猿问

我正在尝试使用 for 语句来清除列表,但它失败了。for语句是如何执行的?

 sum=[1,2,3,4,5,6,7,8,9]

 for figure in sum:

    print(list(sum))

    print(figure)

    sum.remove(min(sum))

    print(figure)

    print(list(sum))

    print('\n')

 print(list(sum))


皈依舞
浏览 177回答 2
2回答

慕田峪9158850

迭代时不能更改可迭代对象的长度。如果要打印最小项并删除它直到列表为空,则应在列表为空的条件下循环,如下所示:sum=[1,2,3,4,5,6,7]while sum:    print(min(sum))    sum.remove(min(sum))输出:1234567改变可迭代长度的问题在于python的解释器基本上会根据列表上的前一个位置尝试获取下一个元素。例如,如果您循环使用:[a,b,c,d]第一个项目将是a(上的项目index 0)。for 循环的下一次迭代将尝试检索项目,index 1但如果您删除a,那么 ìindex1将不再存在b,因为您当前的列表将如下所示;[b,c,d]而index 1现在c,跳绳对neext迭代所有其他项目

临摹微笑

如果要清除整个列表,请使用内置函数clear()。下面是如何做到这一点的示例。lis=[1,2,3,4,5,6,7,8,9]print('printing original list',lis,sep=' : ')# output printing original list : [1, 2, 3, 4, 5, 6, 7, 8, 9] lis.clear()print('printing new cleared list',lis,sep=' : ')# output printing new cleared list : []
随时随地看视频慕课网APP

相关分类

Python
我要回答