枚举函数参数

时间:2016-06-23 05:46:36

标签: python

Python枚举函数enumerate接受一个参数 start 。 这个论点有什么用? 如果我使用这个参数编写一些代码,它只会转移索引,例如

>>a=[2,3,4,5,6,7]
>>for index,value in enumerate(a,start=2):
 ...    print index,value
 ...    
 **2 2**
 3 3
 4 4
 5 5
 6 6
 7 7
 8 8

因此索引更改为2,而不是Value.Value仍然从第一个元素开始。为什么会这样?代替此功能,如果从该索引而不是起始元素开始值,则可能更好。 这个实施背后的想法是什么?

2 个答案:

答案 0 :(得分:1)

enumerate()将一个整数序列与一个iterable相关联,即它枚举序列的项目。它的参数start并不意味着影响迭代中的起始位置,只是开始计数的初始值。

一种用法是从1而不是0开始枚举,例如如果你想对文件中的行进行编号:

with open('file.txt') as f:
    for line_number, line in enumerate(f, 1):
        print(line_number, line)

这将输出从1开始的行号,这是大多数用户期望开始行号的地方。

如果您想跳过序列中的第一个 n 项,您可以将其切片:

a = [2,3,4,5,6,7]
n = 2
for index, value in enumerate(a[n:]):
    print index, value

输出

0 4
1 5
2 6
3 7

但您也可以从3开始枚举:

a = [2,3,4,5,6,7]
n = 2
for index, value in enumerate(a[n:], n+1):
    print index, value

将输出

3 4
4 5
5 6
6 7

答案 1 :(得分:0)

有些人 - 我认为最多 - 不习惯从零开始的枚举列表。至少,这使得输出格式化变得容易,因此枚举从1开始,例如

a = ['Fred', 'Ted', 'Bob', 'Alice']
for index, value in enumerate(a, start=1):
    print index, value

将打印出来:

1 Fred
2 Ted
3 Bob
4 Alice

如果没有start=1参数,enumerate(a)会打印

0 Fred
1 Ted
2 Bob
3 Alice

https://docs.python.org/2/library/functions.html#enumerate