如何通过列表中的最小值从列表中减去?

时间:2016-03-24 14:13:50

标签: python

我试图逐个完全清空列表,但总有2个整数。 如果不离开2个最高值整数,是否可以这样做?如果是这样的话?

list = [1,2,3,4,5]
print (list)
for x in list:
    while x in list:
        list.remove(min(list))


print(list)

4 个答案:

答案 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)