3

我对python中的迭代过程感到困惑

我有:

numbers = [0,1,2,3,4,5]
for i in numbers:
    v = numbers
    print v

这是循环的结尾,但是在 C , C++ , Java 中,我们知道里面的{ }行将被重复执行,或者如果没有给出花括号,那么循环之后的下一条语句,但我在这里感到困惑。迭代中将执行多少行?它取决于缩进吗?

4

4 回答 4

6

在 Python 中,缩进而不是括号决定了块的范围,所以在这个例子中,每次循环迭代都会执行一次缩进的行。

对于来自 C/Java 语言家族的程序员来说,这是关于 Python 的最奇怪的事情,但你很快就会习惯它。

于 2013-03-27T19:42:04.310 回答
4

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(但是,通过使用;,您可以在同一行中添加语句)。

于 2013-03-27T19:42:53.313 回答
1

在 python 中,缩进很重要。在您的代码中,这两行都将在 for 循环的每次迭代中执行:

   v = numbers
   print v
于 2013-03-27T19:42:23.047 回答
1

作为补充说明,我认为您的原始代码没有做我认为您希望它做的事情 - 即在自己的行上打印数字 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]
于 2013-03-27T19:58:13.640 回答