我正在尝试for语句清除列表,但失败。 for语句如何执行?

时间:2019-03-19 11:15:15

标签: python python-3.x

 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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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]

第一个项目为aindex 0上的项目)。 for循环的下一次迭代将尝试检索index 1上的项目,但是如果删除a,则ìndex1将不再是b,因为您当前列表看起来像这样;

[b,c,d]

并且index 1现在为c,在下一个迭代中跳过其他所有项目