在迭代期间从列表中删除整数?

时间:2017-05-27 18:55:15

标签: python

以下是我收到错误的代码。我收到错误:“列表索引超出范围”,我知道这是因为你不能删除迭代中的项目,但我需要并且我不知道如何。

我实际上是在尝试对此列表进行排序,但找到最小值,然后将其附加到新列表并将其从旧列表中删除,但我不知道如何。请帮忙。

代码:

list = [22,1,-5,-10,62,-11,36,8]
m = list.index(min(list))
sorted_list = []

for x in range(len(list)):
    if list[x] > list[m]:
        sorted_list.append(list[m])
        list.remove(list[m])


print (sorted_list)

3 个答案:

答案 0 :(得分:1)

此代码应该将列表从最小到最大排序,然后删除最小值并将其传输到新列表。

List = [22,1,-5,-10,62,-11,36,8]
List2 = []
swapped = True
while swapped:
    swapped = False
    for i in range(len(List)-1):
        if List[i] > List[i + 1]:
            List[i],List[i+1] = List[i + 1],List[i]
            swapped = True
List2.append(List[0])
List.remove(List[0])

print(List)
print(List2)

答案 1 :(得分:0)

对于您所描述的任务,您必须每次都找到新的最小值:

my_list = [22, 1, -5, -10, 62, -11, 36, 8]
new_list = []

while my_list:
    my_min = min(my_list)
    new_list.append(my_min)
    my_list.remove(my_min)

答案 2 :(得分:0)

while循环更好,您需要一步一步地保留新列表中的最小项(排序列表),并将其从旧列表中删除,并重复此操作,直到旧列表变为空。

   while (len(list) <= 1):
        sorted_list = sorted_list.append(min(list))
        list = list.remove(min(list))

    print(sorted_list)