吃透python3中的for遍历(迭代/循环)的玩法

Python
185
0
0
2024-03-17
标签   Python基础

前言

每一种语言都存在多种遍历,或者说迭代,或者说循环等各种各样的方式,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)