【发布时间】:2019-07-22 14:01:23
【问题描述】:
我对 python 比较陌生,并且已经熟悉了基础知识,甚至嵌套了 for 循环。我遇到了下面的函数,当我试图理解它在做什么时,我被绊倒了。它总是返回通过函数传递的列表,并且似乎根据传入的列表的长度将布尔值 False 分配给元素“x”,最终在 false 的值不是时中断循环案子。我不明白的是 for 循环中第一个元素的作用,相对于第二个 for 循环(它从大小中减去)。如果有任何可以帮助我更好地理解这个函数在做什么,将不胜感激。
def myfunc(list):
size = len(list)
for x in range(0, size):
foo = False
for x2 in range(0, size - x - 1):
if list[x2] > list[x2 + 1]:
list[x2], list[x2 + 1] = list[x2 + 1], list[x2]
foo = True
if not foo: break
return list
【问题讨论】:
-
顺便说一句,不要将您的列表命名为
list。为什么?因为它会影响内置。 -
这是一个排序例程。
foo只跟踪您是否交换了任何元素。一旦您浏览列表而无需进行任何交换,您就知道它已排序。