这个for循环如何知道要排序的列表?

时间:2015-02-13 01:12:51

标签: python for-loop

我有下面的代码,它通过函数传递列表中的值。有人能告诉我for循环如何知道通过该函数传递的列表?我认为for循环应该说像

for i in values

但相反它说

for i in range(0,n-1)

def bubbleSort(values):
    n = len(values)
    for i in range(0,n-1):
        for j in range(0,n-1):
            if values[j] > values[j +1]:
                values[j],values[j+1] = values[j+1],values[j]


someValues = [22, 10, 3, 84, 5, 12]
bubbleSort(someValues)
print(someValues)

1 个答案:

答案 0 :(得分:0)

some_list[i]是Python i对象实例的名称时,表达式some_list将计算为list值。

在Python中有效写:

for elem in some_list:
    ...

并期望直接对列表的值进行操作(在每次迭代时,将由elem或您选择的任何循环变量表示。)

同样有效的是迭代list的索引范围,并在需要适当元素的点处访问循环中的list

for i in range(0, len(some_list)-1):
    elem = some_list[i]
    ...

你甚至可以通过使用enumerate函数来跟踪当前索引 当前索引到该位置的元素:

for i, elem in enumerate(some_list):
    some_list[i] == elem #True, unless you've mutated the list (don't!)
    ...