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仍然从第一个元素开始。为什么会这样?代替此功能,如果从该索引而不是起始元素开始值,则可能更好。 这个实施背后的想法是什么?
答案 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