以下是我收到错误的代码。我收到错误:“列表索引超出范围”,我知道这是因为你不能删除迭代中的项目,但我需要并且我不知道如何。
我实际上是在尝试对此列表进行排序,但找到最小值,然后将其附加到新列表并将其从旧列表中删除,但我不知道如何。请帮忙。
代码:
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)
答案 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)