python 下标 遍历列表_Python 简明教程 ---14,Python 数据结构进阶

804e6fce8faa1b42ca6d035248030b69.png
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了。
—— Carig Zerouni

目录

a989a260eef71f6ac15cd1a425329a39.png

前几节我们介绍了Python 中四种数据结构的特性和基本用法,本节介绍与数据结构相关的高级特性。

  • 序列
  • 迭代器
  • 列表生成式
  • 生成器
  • 强制类型转换

1,序列

Python 序列是指,其中存放的元素是有序排列的,可用下标访问,字符串列表元组都是序列。

字典集合中的元素是无序排列的,因此一般不归在序列中。

Python 序列有如下特点:

  • 序列中的元素是不可变类型
  • 序列中的元素可用下标访问,下标可正可负
  • 可通过切片访问部分连续元素
  • 可进行相加相乘in 运算
  • 可通过for 循环遍历所有元素

可以使用collections 模块中的Sequence 类来查看一个对象是否是一个序列:

>>> isinstance('', collections.Sequence) # 字符串是序列
True
>>> isinstance([], collections.Sequence) # 列表是序列
True
>>> isinstance((), collections.Sequence) # 元组是序列
True
>>> isinstance({}, collections.Sequence) # 字典不是序列
False
>>> isinstance(set(), collections.Sequence) # 集合不是序列
False
提示:
1, isinstance 函数用于查看一个对象属于某个类
2,在使用 模块时,要先 import 该模块

2,迭代器

可迭代类型

我们知道strlisttupledictset 都可用for 循环来遍历,这个遍历的过程就是一个迭代过程,这些类型都是可迭代类型。

可迭代的类型,都实现了__iter__ 方法,我们通过dir(可迭代对象),可以看到,可迭代对象的魔法方法中都有一个__iter__ 方法。

我们也可以通过collections 模块中的Iterable 类型来查看一个对象是不是可迭代对象:

>>> isinstance('', collections.Iterable)
True
>>> isinstance([], collections.Iterable)
True
>>> isinstance((), collections.Iterable)
True
>>> isinstance({}, collections.Iterable)
True
>>> isinstance(set(), collections.Iterable)
True

迭代器

迭代器是一种可迭代的对象。

迭代器一定是可迭代的,可迭代的对象不一定是迭代器。

迭代器要实现两个魔法方法:__iter____next__

通过collections 模块中的Iterator 类型来查看这两个方法:

>>> dir(collections.Iterator)

判断一个对象是不是迭代器:

>>> isinstance('', collections.Iterator) # 字符串不是迭代器
False
>>> isinstance([], collections.Iterator) # 列表不是迭代器
False
>>> isinstance((), collections.Iterator) # 元组不是迭代器
False
>>> isinstance({}, collections.Iterator) # 字典不是迭代器
False
>>> isinstance(set(), collections.Iterator) # 集合不是迭代器
False

迭代器通用函数

迭代器有一些通用函数,下面我们介绍一些常用的。

1.enumerate 函数

在Python3 中,enumerate 实际上是一个,可通过help(enumerate) 查看,也可以把它当做函数来使用。

其经常被用在for 循环中,即可遍历下标,又能遍历数据。

作用: 用于给一个 可迭代的对象,添加 下标 原型: enumerate(iterable[, start]) -> iterator 参数 iterable: 一个可迭代的对象 参数 start: 下标起始位置 返回值: 一个 enumerate 对象,同时也是一个 迭代器

示例:

>>> l = enumerate(['a', 'c', 'b']) # 参数是一个列表
>>> type(l)
<class 'enumerate'>
>>> isinstance(l, collections.Iterator) # 是一个迭代器
True
>>> for index, item in l:          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值