百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python启航:30天编程速成之旅(第20天)- itertools

off999 2024-12-29 05:05 34 浏览 0 评论

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。

前期基础教程:

「Python3.11.0」手把手教你安装最新版Python运行环境

讲讲Python环境使用Pip命令快速下载各类库的方法

Python启航:30天编程速成之旅(第2天)-IDE安装

【Python教程】JupyterLab 开发环境安装


Python启航:30天编程速成之旅(第20天)- itertools

引言

itertools 是 Python 的一个标准库,提供了一系列高效的迭代器函数,用于处理无限和有限的迭代器。本期课程将学习如何使用 itertools 模块中的各种函数来简化代码并提高性能。

导入itertools模块

首先,导入 itertools 模块:

import itertools

基本迭代器函数

count(start, step)

count 函数创建一个无限迭代器,从 10 开始,每次增加 20,大于 20 结束。

for i in itertools.count(10, 2):
    if i > 20:
        break
    print(i)

cycle(iterable)

cycle 函数创建一个无限迭代器,遍历给定的可迭代对象,触发制定条件后停止。

for i in itertools.cycle(['A', 'B', 'C']):
    if i == 'C':
        break
    print(i)

repeat(element, times)

repeat 函数创建一个迭代器,重复返回给定的元素,次数由 times 参数指定。

for i in itertools.repeat('Hello', 5):
    print(i)

组合生成器函数

accumulate(iterable, func)

accumulate 函数返回累加值的迭代器,可以指定累加函数。

numbers = [1, 2, 3, 4, 5]
result = itertools.accumulate(numbers, lambda x, y: x + y)
print(list(result))

chain(*iterables)

chain 函数将多个可迭代对象连接成一个迭代器。

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
result = itertools.chain(numbers1, numbers2)
print(list(result))

combinations(iterable, r)

combinations 函数生成所有长度为 r 的组合。

letters = ['a', 'b', 'c']
result = itertools.combinations(letters, 2)
print(list(result))

permutations(iterable, r=None)

permutations 函数生成所有长度为 r 的排列。

letters = ['a', 'b', 'c']
result = itertools.permutations(letters, 2)
print(list(result))

product(*iterables, repeat=1)

product 函数生成笛卡尔积。

numbers = [1, 2]
letters = ['a', 'b']
result = itertools.product(numbers, letters)
print(list(result))

过滤器生成器函数

filterfalse(predicate, iterable)

filterfalse 函数返回一个迭代器,其中包含不满足谓词函数的元素。

numbers = [1, 2, 3, 4, 5]
result = itertools.filterfalse(lambda x: x % 2 == 0, numbers)
print(list(result))

dropwhile(predicate, iterable)

dropwhile 函数跳过可迭代对象中满足谓词函数的元素,直到遇到第一个不满足的元素。

numbers = [1, 2, 3, 4, 5]
result = itertools.dropwhile(lambda x: x < 3, numbers)
print(list(result))

takewhile(predicate, iterable)

takewhile 函数返回一个迭代器,其中包含满足谓词函数的元素,直到遇到第一个不满足的元素。

numbers = [1, 2, 3, 4, 5]
result = itertools.takewhile(lambda x: x < 3, numbers)
print(list(result))

islice(iterable, start, stop, step)

islice 函数返回一个切片迭代器,类似于列表切片。

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = itertools.islice(numbers, 2, 7, 2)
print(list(result))

其他有用的功能

starmap(function, iterable)

starmap 函数类似于 map,但它接受一个可迭代对象,其中每个元素都是一个元组,元组中的元素作为单独的参数传递给函数。

def add(x, y):
    return x + y

pairs = [(1, 2), (3, 4), (5, 6)]
result = itertools.starmap(add, pairs)
print(list(result))

zip_longest(*iterables, fillvalue=None)

zip_longest 函数类似于 zip,但它可以处理不同长度的可迭代对象,并使用 fillvalue 填充较短的可迭代对象。

numbers = [1, 2, 3]
letters = ['a', 'b', 'c', 'd']
result = itertools.zip_longest(numbers, letters, fillvalue='x')
print(list(result))

实战示例

组合生成器示例

假设你需要生成所有长度为 3 的字符串组合,每个字符来自不同的集合。

digits = ['1', '2', '3']
letters = ['a', 'b']
symbols = ['!', '@']

result = itertools.product(digits, letters, symbols)
for combination in result:
    print(''.join(combination))

过滤器生成器示例

假设你需要从一个列表中筛选出所有的质数。

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

numbers = range(1, 20)
primes = itertools.filterfalse(lambda x: not is_prime(x), numbers)
print(list(primes))

总结

通过本教程,相信大家已经学会了如何使用 Python 标准库 itertools 中的各种函数来处理迭代器。itertools 模块提供了许多高效且功能强大的工具,可以帮助你简化代码并提高性能。

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。

相关推荐

下载软件的app大全(下载软件的app大全免费)

中国最常见的目前是迅雷下载软件。官网可以下载到正常的免费版本。他支持ftphttpbt磁力链接等多种形式的下载。国外的有bitcome。电驴和电骡等多种形式的下载软件。他们都可以满足日常的下载要求,...

wifi贴小程序搭建需要多少钱

回答如下:要搭建自己的WiFi小程序,需要以下步骤:1.获得开发资格:首先需要注册成为开发者,获得小程序的开发资格。2.编写代码:使用微信小程序的开发工具,编写WiFi小程序的前端和后端代码。3....

外网服务器地址(外网服务器地址ip大全)

要弄懂这个问题,你首先要了解什么叫内网,什么叫外网,什么叫服务器,服务器在网络中所扮演的是什么角色,内网:就是指内部网络,窄义上的内网就是指中小型的局域网外网:就是指在你办公网络之外能访问到的网络...

360卸载不了的软件怎么办(用360卸载软件卸载不了)

开启了自我保护,关闭即可。解决方法如下:准备材料:360安全卫士、电脑1、在电脑上打开安全卫士,进去之后,点击右上方的列表图标,选择设置,2、进去安全卫士设置界面之后,点击安全防护中心,3、进去安全防...

联想电脑u盘启动不了(联想电脑为什么u盘启动不了)
联想电脑u盘启动不了(联想电脑为什么u盘启动不了)

1,启动计算机,并按住DEL键不放,但是也有按其它键的,所以请根据提示,直到出现BIOS设置窗口。2,键盘方向键向右移动到BIOS"Startup"菜单,然后选择“CMS”按回车键,然后选择"CMS"里面的Enabled。3,在对上面的操作...

2026-01-03 02:03 off999

海马苹果助手官方下载(海马苹果助手官方正版)

除了官方版,苹果其他服务器互通吧好像,只是不能换服务器登录你好;根据你的提示,可能是你的手机系统不正常蚂蚁浏览器,你可以现在一个手机QQ浏览器,它的体积小,功能强大,还特别的节省流量,它使用自主研发的...

wifi恢复出厂设置后上不了网

恢复出厂设置后,路由器的网络设置也被清空了,需要重新设置账号和密码等信息并配置网络。还需要确认路由器的网线连接是否正确,以及是否有其他网络设备干扰。 如果重新配置还是连不上网不能用,可能需要...

联想笔记本蓝屏怎么解决(联想笔记本蓝屏怎么解决方法)

回答如下:如果您的联想笔记本电脑出现蓝屏问题,可以尝试以下解决方法:1.重启电脑:尝试简单的重启电脑,看是否可以解决问题。2.检查硬件:检查您的笔记本电脑是否有硬件故障。例如,您可以拔下所有外接设...

微星显卡型号档次梯队(微星显卡大全)

2019年微星新出的显卡主要系列划分:VENTUS(万图师):入门级版本,也有人说是丐版,用料一般。ARMOR(装甲师):中低版本,做工用料主流,比丐版强一点。DUKE(暗黑龙爵):中等版本,做工用料...

腾达扩展器a12设置(腾达扩展器设置方法)

1、检查扩展器的WiFi是否正确无线扩展器连接的是上端的WiFi,然后再转发出新的WiFi。所以,必须要知道正确的上端WiFi信息,比如WiFi名称和密码。解决方法:用手机连接上端WiFi,登录到这个...

手机文件彻底删除如何恢复(手机里文件删了怎么恢复)
  • 手机文件彻底删除如何恢复(手机里文件删了怎么恢复)
  • 手机文件彻底删除如何恢复(手机里文件删了怎么恢复)
  • 手机文件彻底删除如何恢复(手机里文件删了怎么恢复)
  • 手机文件彻底删除如何恢复(手机里文件删了怎么恢复)
win7 旗舰版32位密钥(win7旗舰版密钥32位激活不了)

可以win7旗舰版32位产品密钥:1、TG664-TJ7YK-2VY3K-4YFY6-BCXF4;2、MVG64-RQDVY-KB9RM-MX9WT-MW824;3、TDTY2-6HJ49-46PCK...

win7下安装ghostxp(win7安装方法ghost)

在win7家庭版电脑中安装虚拟xp系统方法:1.首先安装windows6.1-kb958559-x86-refreshpkg补丁。2.安装完成后,需要重启电脑。3.重启电脑,再安装windowsxpm...

电脑怎么锁屏快捷键(暂时离开电脑怎么锁屏快捷键)

计算机锁屏的快捷键在不同的操作系统上可能会有所不同,但在Windows系统中通常是“Windows键+L”组合键。当您按下这个组合键时,计算机会立即锁定屏幕,需要输入密码才能解锁。这个快捷键可以方便地...

microsoft+teams+meeting怎么加入会议

teams手机点击加入会议没有反应原因和解决方法如下:1.时区不对,把电脑屏幕右下角时区调整好即可进入TeamsPC版。2.会议主办方的问题。3.MicrosoftTeams客户端的大多数问题都...

取消回复欢迎 发表评论: