小鱼:小屌丝,我问问你你?
小屌丝:问我?我没做错啥吧?
小鱼:那倒没有,就是想问问你一件事。
小屌丝:惊慌失措… 这… 我最近可是认真的看书,没做啥事。
小鱼:你慌什么? 我还没问呢。
小屌丝:(⊙o⊙)… 那你问,问…吧~
小鱼:也没有别的事,你知道迭代器吗?
小屌丝:唉… 迭代器啊, 那我知道啊
小鱼:噢,那你说说,迭代器。
小屌丝:range。
小鱼:嗯,继续说。
小屌丝:鱼哥,你说吧,我可能不善言辞。
小鱼:我xxxx,跟我想的一样。
小屌丝:你都预料到了,还来问我。
小鱼:怪我咯
其实迭代器,不仅仅range,在Python内置库有一个很强大的迭代器,
如果没印象的话,可以看看小鱼的这篇博客《Python3,不知道Python内置库函数,不要错过这篇,必须收藏!!!》
当然,今天我们基于这篇,在进行拓展,让我们看看,python内置库的强大。
接着,就是我们今天的主角, itertools。
接下来,我们就看看itertools强大的功能。
看到这里,是不是瞬间觉得,这个itertools还挺香的呢。
因为内置库, 所以,不需要安装,我们直接调用内置库就可以哦了
count(): 创建一个无限递增或递减的整数序列。
# -*- coding:utf-8 -*-
# @Time : 2023-11-26
# @Author : carl_DJ
from itertools import count
#无限递增整数序列,达到20,跳出循环
for i in count(1):
print(i)
if i >20:
break
运行结果
# -*- coding:utf-8 -*-
# @Time : 2023-11-26
# @Author : carl_DJ
from itertools import count
#从10开始递减整数,直到-1
for i in count(10,-1):
print(i)
if i < 0:
break
cycle(): 将可迭代对象变为无限循环迭代器。
# -*- coding:utf-8 -*-
# @Time : 2023-11-26
# @Author : carl_DJ
from itertools import cycle
my_list = ['A', 'B', 'C']
for char in cycle(my_list):
print(char)
if char == 'C':
break
combinations(): 返回给定 iterable 的所有组合。
# -*- coding:utf-8 -*-
# @Time : 2023-11-26
# @Author : carl_DJ
import itertools
s = "ABCD"
for i in range(2, len(s)+1):
for subset in itertools.combinations(s, i):
print(subset)
product(): 返回笛卡尔积(所有可能的排列)。
# -*- coding:utf-8 -*-
# @Time : 2023-11-26
# @Author : carl_DJ
from itertools import product
a = [1,2]
b = [3,4]
print(list(product(a,b)))
看到这里, 关于itertools的知识的分享,也差不多该完事了。
在实际的工作中, itertools的使用频次还是很高的。
所以,至于迭代器,不要仅仅 局限于range哦。
多尝试些新的技能,还是很有好处的哦。
我是小鱼:
关注小鱼,带你学习更多更专业更前言的人工智能相关技术。