zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python 高级特性(2)- 可迭代对象 iterable

Python对象迭代 特性 高级 Iterable
2023-09-27 14:25:57 时间
前置知识如果给定一个 list 或 tuple 我们可以通过 for 循环来遍历这个 list 或 tuple 这种遍历我们称为迭代 Iteration 在 Python 中 迭代是通过 for ... in 来完成的


lists [1, 2, 3, 4, 5]

for i in lists:

 print(i)


可迭代对象for 循环不仅可以用在 list 或 tuple 上 还可以用在其他可迭代对象上list 这种数据类型虽然有下标 但很多其他数据类型是没有下标的 但是只要是可迭代对象 无论有无下标 都可以迭代


dicts {

 a : 1,

 b : 2

for i in dicts:

 print(i)

# 输出结果

b


如何判断一个对象是否是可迭代对象
from collections import Iterable

lists [1, 2, 3, 4, 5]

dicts {

 a : 1,

 b : 2

print(isinstance(lists, Iterable))

print(isinstance(dicts, Iterable))

print(isinstance({ test }, Iterable))

print(isinstance(1234, Iterable))

# 输出结果

False


enumerate 函数循环列表的话 默认是只返回元素值 如果想同时拿到元素值和对应的下标值呢 enumerate 函数可以把 list 变成一个 索引-元素对的迭代对象 然后循环遍历这个对象即可
lists [1, 2, 3, 4, 5]

# 看看是不是迭代对象

print(isinstance(enumerate(lists), Iterable))

for ind, val in enumerate(lists):

 print(ind, val)

# 输出结果

4 5


多嵌套列表
for x, y in [(1, 1), (2, 4), (3, 9)]:

 print(x, y)

# 输出结果

3 9


总结

任何可迭代对象都可以作用于 for 循环 包括我们自定义的数据类型 只要符合迭代条件 就可以使用 for 循环


人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式 “从来如此,便对么?”,鲁迅先生在《狂人日记》中借狂人之口在月光下发出的质疑与呐喊,是的,从来如此,一般人的思维模式就是从来如此,以高数为例子,我们大抵都是先从数分、线代、解几去学泛函、抽代、拓扑等,其实就是按照标准路子来,这样做理论上可以增加对已学知识的理解程度,并对某些数分、线代中的问题看清其本质有所帮助。数学归纳法其实就是一种迭代(iteration),从一个简单的起点,推广到一般情况。而递归(recursion),则是一种反人类的逆向思维模式,作为研发人员,掌握这种反常识的思维逻辑是非常必要的,这里我们以一个推理故事为开端
高频面试题之Python迭代器和迭代对象的区别 首先有很多开发者是不太在意这个问题的, 因为无论是**迭代器(Iterator)**还是**迭代对象(Iterable)**都不影响我们循环遍历的使用, 再加上名字区别不大, 很多人将这两个东西认为是一个东西, 但是如果面试官单独提出这问题了, 那我们就必须细化区分这2个东西了