我是Python的新手,但是学习起起落落。
我不明白这段代码:
要迭代序列的索引,请按如下方式组合range()和len():
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
... print i, a[i]
...
0 Mary
1 had
2 a
3 little
4 lamb
非常直接。但我没有在print i, a[i]
中看到额外的[i]
发挥作用。 (由于我对python的了解不足,毫无疑问)。
但如果有人愿意朝着正确的方向推动我,我会非常高兴。
答案 0 :(得分:3)
让我们把它分解。
for
循环>>> for i in range(len(a)):
len(a)
返回int
,等于列表a
的长度。我们称这个整数为b
,b = len(a)
range(b)
会返回ints
从0
到b - 1
的列表,例如[0, 1, 2, 3, 4]
。
for
循环遍历range()
返回的列表,并将当前值分配给i
(您可以将其称为whatever
)
示例:
>>> for whatever in range(len(a)):
... print whatever, a[whatever]
print
语句... print i, a[i]
然后在索引i
打印a
后跟列表i
的值
您也可以像其他人建议的那样使用enumerate
功能:
for key, value in enumerate(a)
print key, value
答案 1 :(得分:2)
由于i
是一个整数,a[i]
正在从列表a
中检索第i个元素。如@DSM所指出的,一种简单的方法是比较如果你不使用[i]
会输出的内容:
>>> for i in range(len(a)):
... print i, a
0 ['Mary', 'had', 'a', 'little', 'lamb']
1 ['Mary', 'had', 'a', 'little', 'lamb']
2 ['Mary', 'had', 'a', 'little', 'lamb']
3 ['Mary', 'had', 'a', 'little', 'lamb']
4 ['Mary', 'had', 'a', 'little', 'lamb']
不是在每次迭代时打印单个值,而是打印出整个列表。
请注意,您可以使用enumerate
更简洁地实现相同的功能:
>>> for i, w in enumerate(a):
... print i, w
0 Mary
1 had
2 a
3 little
4 lamb
答案 2 :(得分:1)
首先,如果要在循环中获取索引和值,请使用enumerate
for k, v in emumerate(a):
print k, v
在您的情况下,您的样本中没有额外的“[i]”。 len(a)
会返回5
。
range(5)
返回[0, 1, 2, 3, 4]
。假设索引从0开始,一切都是正确的。