我对python中的迭代过程感到困惑
我有:
numbers = [0,1,2,3,4,5]
for i in numbers:
v = numbers
print v
这是循环的结尾,但是在 C , C++ , Java 中,我们知道里面的{ }
行将被重复执行,或者如果没有给出花括号,那么循环之后的下一条语句,但我在这里感到困惑。迭代中将执行多少行?它取决于缩进吗?
我对python中的迭代过程感到困惑
我有:
numbers = [0,1,2,3,4,5]
for i in numbers:
v = numbers
print v
这是循环的结尾,但是在 C , C++ , Java 中,我们知道里面的{ }
行将被重复执行,或者如果没有给出花括号,那么循环之后的下一条语句,但我在这里感到困惑。迭代中将执行多少行?它取决于缩进吗?
在 Python 中,缩进而不是括号决定了块的范围,所以在这个例子中,每次循环迭代都会执行一次缩进的行。
对于来自 C/Java 语言家族的程序员来说,这是关于 Python 的最奇怪的事情,但你很快就会习惯它。
Python 使用缩进来分隔代码块。尝试将此特定代码视为:
numbers = [0,1,2,3,4,5]
for i in numbers: #{
v = numbers
print v
#}
这是完全有效的 Python 代码,其中包含带有花括号的注释,您可以在某些不同的语言中看到它们。
Python 执行单个语句的对应物是:
numbers = [0,1,2,3,4,5]
for i in numbers: v = numbers
print v
并且每个循环都只会执行v = numbers
(但是,通过使用;
,您可以在同一行中添加语句)。
在 python 中,缩进很重要。在您的代码中,这两行都将在 for 循环的每次迭代中执行:
v = numbers
print v
作为补充说明,我认为您的原始代码没有做我认为您希望它做的事情 - 即在自己的行上打印数字 1-5。它应该是(使用 Python 3):
numbers = [0,1,2,3,4,5]
for i in numbers:
print(i)
如果您运行以下代码:
numbers = [0,1,2,3,4,5]
v = numbers
print(v)
你会得到:
[0, 1, 2, 3, 4, 5]