理解for循环

时间:2016-07-23 00:46:14

标签: python for-loop

当我写

时,我不会理解for循环中的某些内容
names = ["Mark", "Cyr", "Hunt", "Dave", "Crock"] 

for name in names:
    print "Here is the list of criminals %r" %names

输出就是这个。

Here is the list of criminals: Mark, Cyr, Hunt, Dave, Crock
Here is the list of criminals: Mark, Cyr, 'Hunt, Dave, Crock
Here is the list of criminals: Mark, Cyr, Hunt, Dave, Crock
Here is the list of criminals: Mark, Cyr, Hunt, Dave, Crock
Here is the list of criminals: Mark, Cyr, Hunt, Dave, Crock

但如果我对它做了一点改动,就像这样。

for i in names:
    print "Here is the list of criminals: %r" %i

输出就像这样

Here is the list of criminals: Mark
Here is the list of criminals: Cyr
Here is the list of criminals: Hunt
Here is the list of criminals: Dave
Here is the list of criminals: Crock

但为什么呢。为什么当我把%i而不是名字输出完全改变

3 个答案:

答案 0 :(得分:3)

在第一个循环中,您正在打印names,这是整个列表。因此,对于列表中的每个元素,您将打印整个列表。

也许您打算打印name

答案 1 :(得分:0)

首先,你做了两件事:

  • 您将循环变量name替换为i
  • 您将第二个操作数替换为格式化运算符%。它是names,现在是i

这意味着两件事:

  • 现在i代替name,在执行names循环时,每次迭代都会获取for的每个元素的值。
  • 对于每次迭代,i中的值(即列表names的元素)由%运算符格式化为"Here is the list of criminals: %r"定义的格式,因此,生成的打印字符串将"Here is the list of criminals: "附加i的值,而不是附加names中列表的整个值的字符串。

答案 2 :(得分:0)

是。列表中有5个元素,因此for循环将循环5次。

您的原始代码有效地说明了这一点: 执行print语句5次。每次都将名为coalesce的整个列表放在names所在的位置。

你的第二个版本说: 执行print语句5次。每次都将当前名称(由名为%r的变量表示)放在i所在的位置。

我的猜测是尾随的'在%r上是约翰提到的第一版中的拼写错误。