文章目录
- 方法一:遍历的是序列的元素
- 方法二:遍历的是序列的索引
- 方法三:while循环遍历实现
- 方法四:调用内置函数enumerate实现
- 1.什么是enumerate函数
- 2.调用内置函数enumerate实现索引遍历序列
如果在遍历序列的过程中,需要访问元素的索引,例如通过索引去查找指定的元素,中心思想就是遍历索引号,通过每次循环的索引号在序列里找到对应的元素。
方法一:遍历的是序列的元素
在for循环开始前,定义一个初始变量,这个变量的值为0,序列中第一个索引是从0开始,然后循环遍历序列本身,每次循环后都对初始遍历+1,下次循环的时候就可以找序列中的第二个索引对应的元素,每次循环的时候都将索引对应的元素打印出来。
mylist = ['jiangxl', 'K8S', 'DevOps']
index = 0
#循环遍历的还是列表中的元素
for elem in mylist:
#打印序列中索引对应的元素
myformat = 'mylist[{}] ---> {}'
print(myformat.format(index, elem))
#每次遍历index的值都+1,索引值每次都不同
index += 1
效果如下,循环遍历序列中的元素,每次循环时索引号都+1,以获取列表中的每个索引对应的元素,每次循环时将索引对应的元素都打印出来。
方法二:遍历的是序列的索引
for循环遍历的对象是序列中的索引,这个方法主要是通过len函数计算出序列的长度,然后使用range函数根据len函数的结果生产一个序列,这个序列中就包含了序列中所有元素对应的索引号。
循环遍历的是序列包含所有索引的整数序列,因此无需事先声明一个初始变量,每次循环时,自定义变量都会拿到具体的索引号,从而得到索引对应的元素。
mylist = ['jiangxl', 'K8S', 'DevOps']
#通过len函数得到列表的长度,然后使用range函数根据这个长度创建出一个整数序列,在这个序列中包含列表的所有索引号,循环遍历这个整数序列
for index in range(len(mylist)):
myformat = 'mylist[{}] ---> {}'
#打印本次循环的索引号,以及索引对应的元素
print(myformat.format(index, mylist[index]))
方法三:while循环遍历实现
在while循环中,也可以去遍历序列,我们根据索引去遍历序列中的元素。
首先定义一个初始变量0,作为第一个索引号,然后使用while循环判断一个条件,当初始值小于序列长度时,则打印当前循环的索引号,以及索引号在列表中对应的元素,并且每次循环都为初始变量+1。
mylist = ['jiangxl', 'K8S', 'DevOps']
index = 0
#当index的值小于列表的长度时,开始循环
while index < len(mylist):
myformat = 'mylist[{}] ---> {}'
print(myformat.format(index, mylist[index]))
index += 1
方法四:调用内置函数enumerate实现
1.什么是enumerate函数
enumerate函数可以将一个有序序列(如列表、元组、字符串)组合成一个带索引元素、元素本身的元组,enumerate函数返回值是一个迭代器对象,可以通过list函数转换成列表格式。
使用enumerate函数,可以手动指定索引的起始值
enumerate函数的语法格式:
enumerate(序列, 起始索引值)
将一个列表通过enumerate函数转换成带有索引、元素的对象。
1)enumerate函数返回值是一个迭代器对象
mylist = ['jiangxl', 'K8S', 'DevOps']
print(enumerate(mylist))
#输出结果:<enumerate object at 0x000001B83AB6ACC0>
2)可以通过list函数将enumerate返回值转换为列表
print(list(enumerate(mylist)))
#输出结果:[(0, 'jiangxl'), (1, 'K8S'), (2, 'DevOps')]
可以看到enumerate函数会将序列中每个元素对应的索引都放在一个元组中,每个元组里只有两个元素,第一个元素是索引,第二个元素是序列元素的本身。
3)还可以指定索引的起始值
指定索引的起始值为1。
print(list(enumerate(mylist, 1)))
#输出结果:print(list(enumerate(mylist, 1)))
此时序列的第一个元素的索引就是从1开始。
2.调用内置函数enumerate实现索引遍历序列
enumerate函数对序列重组后返回的结果是一个列表,在列表中的每一个元素都是元组,且每个元组中有2个元素,基于这种情况,我们就可以运用字典items方法的遍历方式。
循环遍历enumerate函数的返回结果(索引、元素组合成的列表),在for循环中定义两个自定义变量,每次遍历获取列表中的一个元素,这个元素就是元组,元组中的第一个元素赋值给自定义变量1,第二个元素赋值给自定义变量2。
mylist = ['jiangxl', 'K8S', 'DevOps']
for index,elem in list(enumerate(mylist)):
myformat = 'mylist[{}] ---> {}'
print(myformat.format(index, elem
'''
代码解释:
list(enumerate(mylist))的结果为[(0, 'jiangxl'), (1, 'K8S'), (2, 'DevOps')]
for循环遍历list(enumerate(mylist))的结果,每次遍历得到列表中的一个元组元素,第一次为:(0, 'jiangxl'),第二次为: (1, 'K8S'),第三次为:(2, 'DevOps')
按照元素的多变量赋值的特性,每次遍历的代码就是:index,elem = (0, 'jiangxl'),以此类推......
元组中的第一个元素赋值给变量index,元组中第二个元素赋值给变量elem
最后每次循环打印对应的变量值
'''
enumerate函数返回值是一个迭代器对象,虽然我们看不懂,但是Python解释器能够读懂,因此我们也可以在遍历时不将其转换成列表,也是可以遍历的。
mylist = ['jiangxl', 'K8S', 'DevOps']
for index,elem in enumerate(mylist):
myformat = 'mylist[{}] ---> {}'
print(myformat.format(index, elem