当我写
时,我不会理解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而不是名字输出完全改变
答案 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
上是约翰提到的第一版中的拼写错误。