可迭代对象和内建函数

可迭代对象

内建函数函数签名说明
iteriter(iterable)把一个可迭代对象包装成迭代器
next
next(iterator[, default])
取迭代器下一个元素,如果已经取完,继续取抛Stopiteration异常
reversedreversed(seq)返回一个翻转元素的迭代器
enumerateenumerate(seq,start=0)迭代一个可迭代对象,返回一个迭代器,每一个元素都是数字和元素构成的二元组

迭代器

  •         特殊的对象,一定是可迭代对象,具备可迭代对向的特征
  • 通过iter方法把一个可迭代对象封装成迭代器
  • 通过next方法,获取迭代器对象的一个元素
  • 生成器对象,就是迭代器对象。但是迭代器对象未必是生成器对象

可迭代对象:

  •  能够通过迭代一次次返回不同的元素的对象
    • 所谓相同,不是指值是否相同,而是元素在容器中是否是同一个,例如列表中值可以重复的,['a','a'] ,虽然这个列表有2个元素,值一样,但是两个‘a’是不同的元素 
  •  可以迭代,但是未必有序,未必可以索引
  • 可迭代对象有:list 、tuple、string、bytes、bytearray、range、set、dict、生成器、迭代器等
  • 可以使用成员操作符in、not in
    • 对于线性数据结构,in本质上是在遍历对象,时间复杂度是O(n)

内建函数

排序sorted

Signature: sorted(iterable, /, *, key=None, reverse=False)
sorted(lst, key=lambda x:6-x) # 返回新列表
list.sort(key=lambda x: 6-x) # 就地修改
sorted([1, '2', 3], key=lambda x: str(x))
sorted([1, '2', 3], key=str)

过滤filter

  • 定义filter(function,iterable)
  • 对可迭代对象进行遍历,返回一个迭代器
  • function参数是一个参数的函数,且返回值应当是bool类型,或其返回值等效于布尔值
  • function 参数是None,可迭代对象的每一个元素自身等效布尔值
list(filter(lambda x: x%3==0, [1,9,55,150,-3,78,28,123]))
list(filter(None, range(5)))
list(filter(None, range(-5, 5)))

映射map

  • 定义 map(self, /, *args, **kwargs)

  • 对多个可迭代对象的元素,按照指定的函数进行映射
  • 返回一个迭代器
list(map(lambda x: 2*x+1, range(10)))
dict(map(lambda x: (x%5, x), range(500)))
dict(map(lambda x,y: (x,y), 'abcde', range(10)))

拉链函数zip

  • zip(*iterables)
  • 像拉链一样,把多个可迭代对象合并在一起,返回一个迭代器
  • 将每次从不同对象中取到的元素合并成一个元组
list(zip(range(10),range(10)))
list(zip(range(10),range(10),range(5),range(10)))
dict(zip(range(10),range(10)))
{str(x):y for x,y in zip(range(10),range(10))}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值