目录

  • 1️⃣什么是可迭代对象
  • 📗理解一
  • 📘理解二
  • 2️⃣什么是迭代器
  • 📗理解
  • ✔️注意
  • 3️⃣迭代器对象
  • ✨iter()
  • ✨next()
  • 🔋实例
  • 4️⃣有关迭代的函数
  • 🌱---- enumerate()
  • 🌱---- map()
  • 🌱---- zip()
  • 🌱---- filter()


python 用可迭代对象存储comboBox当前文本值_python


1️⃣什么是可迭代对象


📗理解一

  • Iterable对象,就是可迭代对象,即可以用for...in...进行遍历的对象,就叫可迭代对象。
  • 比如列表,元组,字符串,字典等都属于可迭代对象。

📘理解二

  • 一个对象如果实现了__iter__方法,那么我们称这个对象是可迭代对象。

2️⃣什么是迭代器


📗理解

  • 一个实现了__iter__方法和__next__方法,并且可以通过__next__方法不断返回下一个值的对象称为Itertor,即迭代器。
  • 也就是说,迭代器均可以使用 for...in...next逐一遍历。
  • 迭代器的两个最基本的方法:iter()next().

✔️注意

  • 需要注意的是,列表,元组,字典,集合,字符串均实现了__iter__方法,但并未实现__next__方法,所以这些对象并不能称为迭代器。

3️⃣迭代器对象

✨iter()

  • 列表,元组,字符串等对象都可以使用iter()方法来创建迭代器对象

✨next()

  • 创建迭代器对象后就可以使用next()方法来访问元素
  • 访问迭代器对象都是从第一个元素开始,直到访问结束
  • 迭代器只能往前不会后退

🔋实例

>>> list_1 = [1,2,3]
>>> it_list = iter(list_1)
>>> print(next(it_list))
>>> 1
>>> print(next(it_list))
>>> 2
>>> print(next(it_list))
>>> 3
>>> print(next(it_list))
>>> Traceback (most recent call last):
...
StopIteration
  • 显然,如果访问到迭代器对象的最后一个元素时继续访问,就会触发StopIteration异常

4️⃣有关迭代的函数

🌱---- enumerate()

语法:

enumerate(iterable, start=0)

用法:

  • 返回一个索引和enumerate对象

参数:

  • iterable----可迭代对象或迭代器
  • start----索引值,默认为0

实例:

  • 例1
>>>teams=['勇士', '热火', '骑士']
>>>enumerate(teams)
     enumerate object at 0x000002E9569016C0>
>>>for t in enumerate(teams):
       print(t, end = ' ')
...
   (0, '勇士') (1, '热火') (2, '骑士')
  • 例2
>>>teams=['勇士', '热火', '骑士']
>>>for i, t in enumerate(teams):
       print(i, t, end=" ")
...    
   0 勇士 1 热火 2 骑士

例子3

>>>teams=['勇士', '热火', '骑士']
>>>t1 = enumerate(teams)
>>>t1.__next__()
   (0, '勇士')
>>>t1.__next__()
   (1, '热火')
>>>t1.__next__()
   (2, '骑士')
>>>t1.__next__()
   Traceback (most recent call last):
    ...
     t1.__next__()
   StopIteration

例4

>>>teams=['勇士', '热火', '骑士']
>>>t1 = enumerate(teams,2)
>>>t1.__next__()
   (2, '勇士')
>>>t1.__next__()
   (3, '热火')
>>>t1.__next__()
   (4, '骑士')
>>>t1.__next__()
   Traceback (most recent call last):
   ...
    t1.__next__()
   StopIteration

🌱---- map()

用法:

  • 该函数用于将一个函数依次映射到可迭代对象的每个元素上,再返回一个map对象
  • 实际上,map对象既是可迭代对象,也是一个迭代器对象

语法:

map(function, iterable, ...)

参数:
function---- 函数
iterable---- 可迭代对象,可以有多个iterable

返回:

  • 该函数返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。
  • 当有多个可迭代对象时,最短的可迭代对象耗尽则整个迭代就将结束

实例:

由于该函数返回的是迭代器,所有我们可以用list()函数将结果转换为列表。

python 用可迭代对象存储comboBox当前文本值_后端_02


🌱---- zip()

用法:

  • 将多个迭代器对象(或可迭代对象)中的元素压缩到一起,并返回一个zip对象
  • 实际上,zip对象既是可迭代对象,也是一个迭代器对象

语法:

zip(iterable, ...)

参数:

iterable----可迭代对象,可以有多个。

返回:

  • 该函数在多个iterable上并行迭代,从每个可迭代对象上返回一个数据项组成元组。

也就是说, zip() 返回元组的迭代器,其中第 i 个元组包含的是每个参数迭代器的第 i 个元素。

如图:

python 用可迭代对象存储comboBox当前文本值_学习_03


需要注意的是:

  • 如果若干个可迭代对象的长度不同,此时zip() 在最短的迭代完成后停止。较长可迭代对象中的剩余项将被忽略

如图:

python 用可迭代对象存储comboBox当前文本值_开发语言_04

🌱---- filter()

用法:

  • 传入带有一个参数的函数function,并返回一个filter对象
  • filter对象中的元素是由参数中的iterable对象使得函数function返回值为True的那些元素组成
  • 通俗讲就是满足function函数条件的那些元素组成了filter对象
  • 实际上,filter对象既是可迭代对象,也是一个迭代器对象

语法:

filter(function, iterable)

参数:

function ----判断函数,用于过滤掉对象里不符合条件的元素
iterable ----可迭代对象,如列表,元组等。

返回:

  • 返回一个新的迭代器,其中的元素都符合判断函数的条件

实例:

我们可以利用list()函数来转换filter()函数的返回值

python 用可迭代对象存储comboBox当前文本值_迭代_05


好了,分享结束,觉得文章不错的朋友点个赞呗~👍