为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2021-12-09 16:34:24
 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))
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

迭代时不能更改可迭代对象的长度。如果要打印最小项并删除它直到列表为空,则应在列表为空的条件下循环,如下所示:


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

while sum:

    print(min(sum))

    sum.remove(min(sum))

输出:


1

2

3

4

5

6

7

改变可迭代长度的问题在于python的解释器基本上会根据列表上的前一个位置尝试获取下一个元素。


例如,如果您循环使用:


[a,b,c,d]

第一个项目将是a(上的项目index 0)。for 循环的下一次迭代将尝试检索项目,index 1但如果您删除a,那么 ìindex1将不再存在b,因为您当前的列表将如下所示;


[b,c,d]

而index 1现在c,跳绳对neext迭代所有其他项目


查看完整回答
反对 回复 2021-12-09
?
临摹微笑

TA贡献1982条经验 获得超2个赞

如果要清除整个列表,请使用内置函数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 : []


查看完整回答
反对 回复 2021-12-09
  • 2 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号