范围函数Python

时间:2013-11-17 18:46:12

标签: python

我是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的了解不足,毫无疑问)。 但如果有人愿意朝着正确的方向推动我,我会非常高兴。

3 个答案:

答案 0 :(得分:3)

让我们把它分解。

for循环

>>> for i in range(len(a)):
  • len(a)返回int,等于列表a的长度。我们称这个整数为bb = len(a)

  • range(b)会返回ints0b - 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开始,一切都是正确的。