前言
每一种语言都存在多种遍历,或者说迭代,或者说循环等各种各样的方式,Python也不例外,下面我以python3.x的语法来带你了解python中的遍历方式。在Python中,遍历(或迭代)是一种常见的操作,用于逐一访问序列(如列表、元组)、字典、文件等中的元素。
为了方便实操,你也可以把鼠标放到代码块上,可以点击运行就可以看到效果。
使用for循环
1、遍历数组
任何语言几乎都存在for循环,只是每个语言使用for的代码的方式略有不同,例如有一串数字数组:1,2,3,4,5,对于初学者来说可能立马写了for(int i;i<5;i++)的代码块,
numbers = [1, 2, 3, 4, 5]
for number in numbers:
print(number)
运行结果如下:
2、遍历字符串
还有很多时候需要遍历一个字符串,总字符串中找到子串或者找到自己需要的字符。这个时候就需要使用到遍历字符串的知识点了,例如str = "我叫郑晖,2024年我在腾讯云开发者社区学Python"
str = "我叫郑晖,2024年我在腾讯云开发者社区学Python"
for char in str:
print(char)
效果:
3、使用for循环遍历字典
先来回顾下什么是字典:
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
ddd = {key1 : value1, key2 : value2 }
例如存储年龄、姓名、班级:
tinydict = {'Name': '郑晖', 'Age': 18, 'Class': '腾讯云社区'}
print(tinydict)
效果如下:
如果你想遍历出来该如何做呢:
只遍历键:
tinydict = {'Name': '郑晖', 'Age': 18, 'Class': '腾讯云社区'}
for key in tinydict:
print(key)
只遍历值:
tinydict = {'Name': '郑晖', 'Age': 18, 'Class': '腾讯云社区'}
for val in tinydict.values():
print(val)
同时遍历值和键:
tinydict = {'Name': '郑晖', 'Age': 18, 'Class': '腾讯云社区'}
for k,v in tinydict.items():
print(k,v)
for的其他玩法
列表推导式的玩法
列表推导式是使用for循环快速创建列表的一种方法,它更加简洁且易于阅读。
我常用在创建数据的时候:
squares = [x**2 for x in range(10)]
print(squares)
enumerate的玩法
enumerate()在迭代时提供了一个计数器,可以用来获取元素的索引和值。
如果你想获取索引和值,这个可能非常适合你的需求:
for index, value in enumerate(['腾', '讯', '云']):
print(index, value)
并行迭代的玩法
使用zip()函数可以并行迭代两个或更多的序列。
names = ['郑辉', '小明', '小红']
ages = [18, 24, 19]
for name, age in zip(names, ages):
print(name, age)
字典迭代的玩法
这个上面已经说了,这里来个简单直白的:
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
print(key, value)
嵌套循环(多维)的遍历玩法
通常用在多维数据的遍历
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for item in row:
print(item,end=",")
print("\n")
这里为了方便演示打印的结果,我改变了print()的结束字符,默认会回车换行。
循环与else子句共用的有趣玩法
for循环可以有一个else部分,当循环正常结束时执行(即没有被break语句中断)。
非常有意思,例如你想从一个数组中找一个数,但是没找到,就可以用这个方式:
for num in [1, 2, 3, 4, 5]:
if num == 0:
break
else:
print("没有找到0")
还有比较重要和高级的迭代器的玩法
结合next()函数和迭代器进行更细粒度的迭代控制。
iterable = iter([1, 2, 3])
for item in iterable:
print(item)
if item == 2:
next_item = next(iterable, None)
print("msg:", next_item)