for items in list 和 for i in range (0, len(x)) in python 之间的区别

Difference between for items in list and for i in range (0, len(x)) in python

我正在掌握 python 中的列表,但当涉及到使用这两个函数的差异时,我感到很困惑。

def print_list(x):
    for j in range (0, len(x)):
        print x[j]

def print_list(x):
    for item in list:
        j = 0
        print x[j]
        j++

任何人都可以向初学者解释一下吗?谢谢!

我假设

def print_list(x):
    for j in range (0, len(x)):
         print x[j]

是 C++ 中循环 运行 的方式。所以你凭直觉就明白了。在这里,range 生成(查找 generators)值 0len(x) 并且 for 语句遍历它们。

正如评论中指出的,您的第二种语法是错误的。我假设你的意思是

def print_list(x):
    for item in x:
        print(item)

for 语句遍历列表 x 中的每个 item
因此,如果您的列表是 [1,3,5,7,9],在第一个循环中,item 将具有值 1。在第二个循环中,item 将具有值 3。在第三个循环中,item 将具有值 5。等等。

当所有值都被迭代后,for 循环结束。

第一个例子是正确的,应该足够pythonic了。第二个不正确。

def print_list(x):
    for item in list: #where is the iterable oject called list? This shuold be x
        j = 0 # if you use a counter like j you shuold be defining before the loop otherwise you keep resetting it to 0.
        print x[j]
        j++

如果你想打印一个列表中的所有元素,这是一种更 pythonic 和更好的方法。

def print_list(list_item):
    for element in list_item:
         print(element)

您不需要像第一个示例那样使用 range 和 len,list 是可迭代对象,因此您可以像上面的示例一样操作而无需重复使用 range()。