什么是row_number,行在枚举(游标):做Python?
在这个上下文中,enumerate是什么意思?
什么是row_number,行在枚举(游标):做Python?
在这个上下文中,enumerate是什么意思?
当前回答
它是一个内建函数,返回一个可以迭代的对象。请参见文档。
简而言之,它循环遍历可迭代对象(如列表)的元素,以及组合在元组中的索引号:
for item in enumerate(["a", "b", "c"]):
print item
打印
(0, "a")
(1, "b")
(2, "c")
如果你想要循环一个序列(或其他可迭代的东西),并且还想要有一个可用的索引计数器,这是很有帮助的。如果你想让计数器从其他值开始(通常是1),你可以把它作为第二个参数来枚举。
其他回答
枚举函数的工作原理如下:
doc = """I like movie. But I don't like the cast. The story is very nice"""
doc1 = doc.split('.')
for i in enumerate(doc1):
print(i)
输出为
(0, 'I like movie')
(1, " But I don't like the cast")
(2, ' The story is very nice')
enumerate函数同时计算元素索引和元素值。我相信下面的代码将有助于解释发生了什么。
for i,item in enumerate(initial_config):
print(f'index{i} value{item}')
它是一个内建函数,返回一个可以迭代的对象。请参见文档。
简而言之,它循环遍历可迭代对象(如列表)的元素,以及组合在元组中的索引号:
for item in enumerate(["a", "b", "c"]):
print item
打印
(0, "a")
(1, "b")
(2, "c")
如果你想要循环一个序列(或其他可迭代的东西),并且还想要有一个可用的索引计数器,这是很有帮助的。如果你想让计数器从其他值开始(通常是1),你可以把它作为第二个参数来枚举。
我正在读Brett Slatkin写的一本书(Effective Python),他展示了另一种遍历列表的方法,也知道列表中当前项的索引,但他建议最好不要使用它,而是使用枚举。 我知道你问enumerate是什么意思,但是当我理解了下面的内容后,我也理解了enumerate如何在知道当前项的索引的同时更容易(而且更可读)遍历列表。
list_of_letters = ['a', 'b', 'c']
for i in range(len(list_of_letters)):
letter = list_of_letters[i]
print (i, letter)
输出结果为:
0 a
1 b
2 c
在我读到枚举函数之前,我还曾经做过一些更愚蠢的事情。
i = 0
for n in list_of_letters:
print (i, n)
i += 1
它产生相同的输出。
但是使用enumerate,我只需要写:
list_of_letters = ['a', 'b', 'c']
for i, letter in enumerate(list_of_letters):
print (i, letter)
我假设你知道如何迭代某些列表中的元素:
for el in my_list:
# do something
现在,有时不仅需要遍历元素,还需要每次迭代的索引。一种方法是:
i = 0
for el in my_list:
# do somethings, and use value of "i" somehow
i += 1
然而,更好的方法是使用“enumerate”函数。enumerate所做的是它接收一个列表,并返回一个类似列表的对象(一个可以迭代的可迭代对象),但这个新列表的每个元素本身包含两个元素:索引和原始输入列表的值: 所以如果你有
arr = ['a', 'b', 'c']
然后命令 列举(arr) 返回如下内容:
[(0,'a'), (1,'b'), (2,'c')]
现在,如果你遍历一个列表(或可迭代对象),其中每个元素本身都有2个子元素,你可以在for循环中捕获这两个子元素,如下所示:
for index, value in enumerate(arr):
print(index,value)
它将打印出enumerate输出的子元素。
一般来说,你可以将列表中的多个项目“解压缩”为多个变量,如下所示:
idx,value = (2,'c')
print(idx)
print(value)
它会打印
2
c
这类赋值发生在该循环的每次迭代中,以enumerate(arr)为可迭代对象。