如何在 for 循环中更改范围值
How to change a range value in a for loop
在 for 循环内删除值后尝试访问列表中的值时出现索引错误。如何在每次迭代后更改 for 循环中的范围值?该函数本身是将列表作为输入并在新列表中反转列表,但仅通过将一个列表中的元素移到另一个列表中,以便输入列表最终为空。
def minsort(lst):
new_lst = list()
counter = 0
while len(lst) > counter:
smallest = lst[0]
for i in range(1, len(lst)):
if smallest > lst[i]:
smallest = lst[i]
new_lst.append(smallest)
lst.remove(smallest)
smallest = lst[0]
else:
new_lst.append(smallest)
lst.remove(smallest)
return new_lst
lst = [3,1,2]
print(minsort(lst))
我得到的错误:
if smallest > lst[i]:
IndexError: list index out of range
编辑:我这样做时没有任何内置函数,例如 sorted()
如果您尝试按升序对列表进行排序,您可以使用:
new_lst = sorted(lst)
编辑*
好吧,这似乎在没有任何内置函数的情况下工作:
def minsort(lst):
new_lst = []
while lst:
smallest = None
for item in lst:
if smallest == None:
smallest = item
elif item < smallest:
smallest = item
new_lst.append(smallest)
lst.remove(smallest)
return new_lst
在 for 循环内删除值后尝试访问列表中的值时出现索引错误。如何在每次迭代后更改 for 循环中的范围值?该函数本身是将列表作为输入并在新列表中反转列表,但仅通过将一个列表中的元素移到另一个列表中,以便输入列表最终为空。
def minsort(lst):
new_lst = list()
counter = 0
while len(lst) > counter:
smallest = lst[0]
for i in range(1, len(lst)):
if smallest > lst[i]:
smallest = lst[i]
new_lst.append(smallest)
lst.remove(smallest)
smallest = lst[0]
else:
new_lst.append(smallest)
lst.remove(smallest)
return new_lst
lst = [3,1,2]
print(minsort(lst))
我得到的错误:
if smallest > lst[i]:
IndexError: list index out of range
编辑:我这样做时没有任何内置函数,例如 sorted()
如果您尝试按升序对列表进行排序,您可以使用:
new_lst = sorted(lst)
编辑*
好吧,这似乎在没有任何内置函数的情况下工作:
def minsort(lst):
new_lst = []
while lst:
smallest = None
for item in lst:
if smallest == None:
smallest = item
elif item < smallest:
smallest = item
new_lst.append(smallest)
lst.remove(smallest)
return new_lst