我刚刚开始学习编程4周前。我读了“艰难学习Python”这本书,目前正在学习“用Python学习Raspberry Pi编程”。我上面写的代码完全让我困惑,我似乎无法绕过它。该书声明它列出了斜杠的索引(我正在研究一个Web机器人)。我在for循环中从未见过这样的格式。为什么前面有变量?请解释(请用英文说明:D)。
谢谢,
迈克尔
答案 0 :(得分:0)
括号内的“for循环”称为“列表理解”。
这里迭代enumerate(start)
,这是一个迭代器,为给定的迭代项中的每一项产生一个(索引,项)元组。
迭代这个迭代器,将索引放入i
,将字符放入ind
(这是混乱的,可变的)。对于每个项目,如果它是/
,索引将被接收到最终列表中,以便最后,列表包含字符串中斜杠的所有索引(?)start
答案 1 :(得分:0)
它与以下代码完全相同:
slashList = []
i = 0
for ind in start:
if ind == '/':
slashList.append(i)
i += 1
它使用一些技巧将所有内容挤到一行。第一个称为list comprehension。它允许您创建一个列表,而不会将for
循环和if
语句分成不同的行。第二个是enumerate内置函数。它允许您在项目(此处,分配给i
)本身的同时获取start
之类的可迭代项目中的每个项目的索引ind
。
答案 2 :(得分:0)
这是一个列表理解,一种运行循环以在Python中构建列表的更紧凑的方式。
写这篇文章的漫长道路是:
SlashList = []
for i, ind in enumerate(start):
If ind == '/':
SlashList.append(i)
其中ind是列表'start'中字段值的名称,i是ind的索引(或列表中的位置)
'ind'和'start'是特别无益的变量名称可能会增加理解这一行的困惑: - )