我试图逐个完全清空列表,但总有2个整数。 如果不离开2个最高值整数,是否可以这样做?如果是这样的话?
list = [1,2,3,4,5]
print (list)
for x in list:
while x in list:
list.remove(min(list))
print(list)
答案 0 :(得分:0)
还有另一种清空list
的方法。这样您就不需要使用for循环了。
>>> lst = [1,2,3,4,5]
>>> del lst[:]
>>> lst
[]
>>>
或者:
>>> lst = [1,2,3,4,5]
>>> lst[:] = []
>>> lst
[]
>>>
如果你真的想在当时清空list
一个元素,这没有多大意义,你可以使用while
循环。
lst = [1,2,3,4,5]
x = len(lst)-1
c = 0
while c < x:
for i in lst:
lst.remove(i)
c = c+1
print (lst)
>>>
[]
>>>
答案 1 :(得分:0)
我觉得您的问题可能还有更多,但要清空列表,您可以使用python3 清除:
lst = [1,2,3,4,5]
lst.clear()
如果你真的想要每一分钟而且必须一个接一个地继续前进,直到列表为空:
lst = [1, 2, 3, 4, 5]
while lst:
i = min(lst)
lst.remove(i)
print(i, lst)
答案 2 :(得分:0)
如果您想重复删除此列表中的最小元素并以某种方式处理它,而不是仅清除列表,您可以这样做:
while list: # short way of saying 'while the list is not empty'
value = min(list)
process(value)
list.remove(value)
(这不是最有效的代码,因为它迭代一次以找到最小值并再次删除它,但它证明了这个想法)
你的问题是你在修改它时在列表上使用for循环,这肯定会导致问题,但实际上根本不需要for循环。
也不要将list
用作变量名,因为它会影响内置名称,这对其他用途非常有用。
答案 3 :(得分:0)
我认为这就是你要做的事情:
lst = [1,2,3,4,5]
while lst: # while the list is not empty
m = min(lst)
while m in lst: # remove smallest element (multiple times if it occurs more than once)
lst.remove(m)