enumerate()的作用在许多情况下,我们需要在迭代一对数据(即我们可以循环的任何对象)时获取元素的索引。实现预期结果的一种方法是:animals=['dog','cat','mouse']foriinrange(len(animals)):print(i,animals[i])Output:0dog1cat2mouse大多数具有C++/Java背景的开发人员可能会选择上述实现,并且通过索引遍历数据对象的长度对他们来说是一个熟悉的概念。但是,这种方法效率很低。我们可以使用enumerate()来实现:fori,jinenumerate(example):print(i,j)enumerate()提供了强大的功能,例如,当你需要获取索引列表时,它会派上用场:(0,seq[0]),(1,seq[1]),(2,seq[2]),...案例研究一:枚举字符串字符串只是一个列表例如,我们可以想象一个给定的字符串作为单个字符(项目)的集合。所以枚举字符串会给我们:1.字符的索引。2.性格的价值。word="Speed"forindex,charinenumerate(word):print(f"Theindexis'{index}'andthecharactervalueis'{char}'")输出:索引为'0'且字符值为'S'索引为'1'且字符值为'p'索引为'2'且字符值为'e'索引为'3'且字符值为'e'索引为'4',字符值为'd'案例二:枚举一个列表那么,我们应该如何枚举一个列表呢?为此,我们可以使用for循环并遍历每个项目的索引和值:sports=['soccer','basketball','t`ennis']forindex,valueinenumerate(sports):print(f"该项目的索引为{index},其值为'{value}'")输出:该项目的索引为0,其值为'soccer'该项目的索引为1,其值为'basketball'该项目的索引为2并且它的值为'tennis'案例研究3:自定义起始索引我们可以看到枚举从索引0开始,但我们经常需要更改起始位置以允许更多的可定制性。好在enumerate()还有一个可选参数[start]enumerate(iterable,start=0)可以用来表示索引的起始位置,如下:students=['John','Jane','J-bot137']forindex,iteminenumerate(students,start=1):print(f"索引为{index},列表元素为'{item}'")输出索引为1,列表元素为'John'Theindexis2andthelistelementis'Jane'Theindexis3andthelistelementis'J-Bot137'现在,修改上面的代码:1.起始索引可以是负数;2.省略start=默认从索引0开始。teachers=['Mary','Mark','Merlin']forindex,iteminenumerate(teachers,-5):print(f"索引为{index},列表元素为'{item}'")输出将是:索引为-5,列表元素为“Mary”索引为-4,列表元素为“Mark”索引为-3,列表元素为“Merlin”案例研究4:枚举器组使用枚举元组遵循与枚举列表相同的逻辑:colors=('red','green','blue')forindex,valueinenumerate(colors):print(f"Theitem'sindexis{index}anditsvalueis'{value}'")输出:该项目的索引为0,其值为'red'Theitem'sindexis1anditsvalueis'green'Theitem'sindexis2anditsvalueis'blue'案例研究5:枚举列表中的元组让我们更进一步,将多个元组组合成一个列表……我们将枚举这个元组列表。一种方法的代码如下:letters=[('a','A'),('b','B'),('c','C')]forindex,valueinenumerate(letters):lowercase=value[0]uppercase=value[1]print(f"Index'{index}'referstotheletters'{lowercase}'and'{uppercase}'")然而,元组解包结果是一个更有效的方法。例如:letters=[('a','A'),('b','B'),('c','C')]fori,(lowercase,uppercase)inenumerate(letters):print(f"Index'{i}'指代字母'{lowercase}'和'{uppercase}'")output:Index'0'指代字母'a'and'A'Index'1'指代字母字母'b'和'B'Index'2'指的是字母'c'和'C'案例研究6:枚举字典枚举字典看起来类似于枚举字符串或列表,但它们不是,主要区别在于它们的顺序结构,即特定数据结构中元素的顺序。字典有些随意,因为它们的项目顺序是不可预测的。如果我们创建一个字典并打印它,我们将得到一个结果:translation={'one':'uno','two':'dos','three':'tres'}print(translation)#computer:{'one':'uno','two':'dos','three':'tres'}然而,如果你打印这本字典,顺序可能会不同!由于索引无法访问字典项,我们必须利用for循环来遍历字典的键和值。键值对称为item,因此我们可以使用.items()方法:animals={'cat':3,'dog':6,'bird':9}forkey,valueinanimals.items():print(key,value)的输出将是:cat3dog6bird9本文由多发博客平台OpenWrite发布!
