【Python技巧】——几种遍历

键值对遍历

for key, value in dict.items():

同时遍历键和值,可以在dict后面加一个dict.items()进行遍历,注意需要使用两个变量来接收遍历的值。
在 Python 中,字典是一种无序的数据类型,存储的是键(key)和值(value)之间的关联关系,不保存它们的位置信息。
在字典中,每一个键(key)对应唯一的值(value),而且键(key)必须是不可变的类型(如字符串、整数或元组等),所以我们无法使用索引或位置信息来访问或操作键值对。相反,我们需要通过键来获取对应的值,或者对字典进行遍历,获取其中的所有键值对。
同时 dict.items遍历有点类似enumerate(list)的双变量遍历,不过dict是只有key、value,而list是只有index、value
在这里插入图片描述

for key in dict.keys()

遍历字典的键可以通过for key in dict.keys() 或者 `for key in dict:进行遍历
在这里插入图片描述
两种遍历方式得到的结果是相同的
在这里插入图片描述

for value in dict.values()

遍历字典的值,可以使用`for value in dict.values():
在这里插入图片描述

列表遍历

for item in list:

在这里插入图片描述

for index in range(len(list)):

只获取列表元素的位置信息,可通过range(len(list)的方式进行遍历。需要注意的是,列表的初始位置为0,通过range放回的初始值也是0. 如果需要特别的值的话,一般是等差数列值,可以在range部分,或者遍历体内进行进一步的定义。
在这里插入图片描述

for index,value in enumerate(list):

列表是有序可遍历变量,所以列表的元素的位置具有意义。可通过enumerate(list)的方式同时遍历其元素位置index和值value
在这里插入图片描述

可递归变量的元素是元组

for inputs, targets in train_ds:
	print("inputs shape:", inputs.shape)
	print("inputs dtype:", inputs.dtype)
	break

在train_ds中,数据是以tuple元组的形式保存的

train_ds = [(inputs,targets), (inputs,targets)]
  • 当我们以元组元素个数来遍历train_ds,就能将元组中的数据存储到对应的变量中
  • 如果for 后面只有一个变量的话,则直接返回遍历的元组tuple

3个元素,取1个

如果遍历时只指定一个变量的话,那么默认返回遍历中的整个原则
在这里插入图片描述

3个元素, 取3个

按照元组中元素个数,遍历的话,就会将元组中每个元素赋值到对应的变量中
在这里插入图片描述

3个元素,只取2个(1 <, < 3)(会报错)

例如我们如果元组中有3个元素,但是希望通过遍历获得a,b 两个变量的话,就会触发valueError,也就是说遍历会返回3个变量,但是我们只指定了两个变量的话,是会出现问题的。

在这里插入图片描述

3个元素,取4个(>3) (会报错)

元组中有3个元素,然而遍历时却指定超过元组元素数量的个数的变量,这里为4个。同样会触发ValueError报错
在这里插入图片描述

zip()函数遍历多个数组

使用zip()函数可以遍历多个数组

arr1 = [1, 2, 3, 4, 5]
arr2 = ['a', 'b', 'c', 'd', 'e']
arr3 = ['一','二','三','四','五']
for a, b, c in zip(arr1, arr2, arr3):
    print(a, b, c)

在这里插入图片描述
但是需要注意的是,zip()里面有多少个数组,for后面就需要有多少个变量去接收遍历的值

zip()遍历会匹配最短的数组,即是短板效应

这与R语言的会自动耦合遍历不同,zip()也就是遍历到最短的就停止

arr1 = [1, 2, 3, 4, 5]
arr2 = ['a', 'b', 'c', 'd', 'e']
arr3 = ['一','二','三','四']
for a, b, c in zip(arr1, arr2, arr3):
    print(a, b, c)

参考博客
https://haicoder.net/python/python-list-walk.html
https://blog.csdn.net/qq_42751978/article/details/129791051

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值