python中itertools模块zip_longest函数

3. 有点难~ Python函数式编程中 itertools 模块 itertools 模块可得好好学学 阅读详情

转自:https://cloud.tencent.com/info/953309e89506db76deef56a4a9a0a4e7.html

最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现

其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)时,其函数实现的功能和内置zip函数大致相同(实现一一对应),

不过内置的zip函数是已元素最少对象为基准,而zip_longest函数是已元素最多对象为基准,使用fillvalue的值来填充

以下是自己总结此函数的大致实现方法,和官方方法不同:

思路大致如此: 找出元素个数最多 ==>算出元素个数差值==>填充差值个元素到各个对象

def zip_longest(*it, **kwargs):
    its = {k: len(k) for k in it}     # 这里我是用字典把参数对象和参数的元素个数结果作为一个字典
    max_num = max(its.values())       # 确定迭代对象元素最大值 
    result = []                       # 
    fillvalue = kwargs.get('fillvalue', None)  # 元素较少的填充值
    for x in range(max_num):          # 已最大次为基准循环
        result = []
        for it in its:                # 循环所有迭代对象,以便进行填充数据
            element = list(it)        # 将
            if len(it) < max_num:     # 如果迭代对象的元素个数比最大值小,则要填充数据
                for i in range(max_num - len(it)):  # 此为要填充数据的个数
                    element.append(fillvalue)       # 填充操作,完成后所有的迭代对象的元素个数都为一致       
            result.append(element[x])               # 生成一一对应结果,存放到list中
        yield tuple(result)                         # 将结果输出

测试其结果: 

res = zip_longest('abc', '12')
for x in res:
    print(x)

结果为:

('a', '1')
('b', '2')
('c', None)
python中itertools模块zip_longest函数详解 itertools模块包含创建高效迭代器的函数,这些函数的返回值不是list,而是iterator(可迭代对象),可以用各种方式对数据执行循环操作,今天我们来详细探讨下zip_longest函数 立即下载

相关推荐

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化...

全文链接:https://tecdat.cn/?p=37821分析师:Yifan Zhang量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限(点击文末“阅读原文”获取完整代码数据)。量子计算作为一个全新的领域,带来了相较于传统经典计算模式的重大范式转变。在量子计算的体系中,传统的 0 或 1 的经典比特被一...

拓端研究室TRL 1456

python中itertools模块zip_longest函数实现逻辑

最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)时,其函数实现的功能和内置zip函数大致相同(实现一一对应),不过内置的zip函数是已元素最少对象为基准,而zip_longest函数是已元素最多对象为基...

weixin_33671935的博客 363

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 707

Python基础学习之itertools.zip_longest()函数

itertools.zip_longest()函数是Python标准库itertools模块中的一个函数,用于将多个可迭代对象进行组合,生成一个迭代器,逐个产生由输入可迭代对象中元素组成的元组。如果输入的可迭代对象长度不一致,zip_longest()会使用填充值来填充较短的可迭代对象。在上面的示例中,itertools.zip_longest()函数将列表list1和list2进行配对,由于list2较短,使用fillvalue='NA'来填充。

qq_45212655的博客 1049

基于粒子群优化的PID控制在药液流量控制系统中的应用

本文提出了一种基于粒子群优化(PSO)的PID控制算法,用于药液流量控制系统。系统采用C37控制器和Codesys 2.3编程环境实现,通过传感器实时监测流量、压力和车速,并控制水泵占空比和电动球阀开度来精确调节药液流量。硬件配置包括FT-2000流量传感器、PT-3000压力传感器和MV-500电动球阀等。控制算法将PSO与PID结合,使用ITAE指标优化PID参数,在Codesys中实现了包含PSO优化循环、PID控制等功能的程序模块。该系统通过分层控制策略和智能优化算法,提高了药液流量控制的精度和响应

AI的内部世界的博客 250

YOLOv13改进策略【Backbone/轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 671

组合并提取两个可迭代对象中相同位置的元素 itertools.zip_longest()

print("【执行】zip_longest(x, y,fillvalue = 'z')")#IT研究所# [握手] #30天快速上手python数据分析#print("【执行】zip_longest(x, y)")print("【显示】将结果(迭代器)转换为list显示")print("【显示】将结果(迭代器)转换为list显示")期待大家提出宝贵建议,互相交流,收获更大,助教:lxy。A选项:第一、第二参数可以是列表,元组,字典。print("【显示】x =",x)print("【显示】y =",y)

liujingwei8610的专栏 313

【C++】ROS:ROS1环境配置与基础示例

ROS1环境配置与基础示例

DevFrank的博客 2105

python自带intertool模块找不到_python中itertools模块zip_longest函数实现逻辑

最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)时,其函数实现的功能和内置zip函数大致相同(实现一一对应),不过内置的zip函数是已元素最少对象为基准,而zip_longest函数是已元素最多对象为基准,使用fillval...

weixin_39619270的博客 206

Linux | Ubuntu18.04安装RTX 4060显卡驱动完整教程

本节详细介绍了如何在ubuntu18系统安装4060显卡的驱动。

九七的博客 5160

tar解压报错 gzip: stdin: unexpected end of file tar: Unexpected EOF in archive

错误现象: [root@centos7-xinsz08 ~]# tar xf prometheus-2.7.2.linux-amd64.tar.gz gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF tar: 归档文件中异常的 EOF tar: Error is not recoverable: exiting now 错误原因排查 ...

互联网老辛 2万+

【Python】itertools模块合并多个可迭代对象的生成器函数

itertools模块合并多个可迭代对象的生成器函数

2301_76287968的博客 760

windows下玩转vllm:在wsl下安装vllm

当前,部署通义千问2.5-vl已经是一件箭在弦上,不得不发的事儿了。网上搜了一下,发现还是用vllm用的比较多。于是乎,这就开始尝试部署vllm。但是我们之前说了,vllm是不支持直接在windows上部署的,我们还得搞wsl或者docker。咱今天先尝试使用wsl进行安装哈。

xiezhipu的博客 4137

Python zip函数详解+和izip和zip_longest的比较辨析

目录   1. zip()函数 1.1 zip()函数的用法 1.2 zip()函数的应用 1.3 *zip()的用法 2. itertools.izip() 3. itertools.zip_longest() 1. zip()函数 zip是Python的内置函数,通过help查看其使用方式如下: help(zip) Help on built-in function z...

THEAQING 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

zip和zip_longest

from itertools import zip_longest # zip可以创建一个迭代器,迭代器的长度和其中最短的输入序列长度相同, 示例如下: x = ['name', 'age', 'score', 'address'] y = ['liming', 22, 78.6] if __name__ == '__main__': # zip函数可以添加多个序列, 不局限于两个 for m in zip(x, y): print(m, end=' ') # (.

HugmeWhenyoucopl的博客 329

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Python】itertools模块,补充:可迭代对象、迭代器

【Python】itertools模块(chainMap, zip_longest, starmap, islice, accumulate, count, cycle, repeat, product, permutations, combinations, compress, takewhile, dropwhile, filterfalse, compress, groupby, tee),补充:可迭代对象,迭代器

yannan20190313的博客 1592

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python成为专业人士笔记-Itertools 模块

“专业人士笔记”系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​ Combinations方法 组合将返回一个列表的k-wise散列组合序列的生成器 换句话说:它将返回一个元组生成器,其中包含输入列表的所有可能的 k-wise散列 组合 例如: 如果你有一个列表: import itertools a = [1,2,3,4,5] b = list(itertools.combinations(a, 2)) print(b) # [(1, 2), (1.

创帆云的博客 350

Python 笔记(15)— itertools 模块 chain、accumulate、compress、drop、take、repeat 等函数使用

Python 内置的 itertools 模块使用了 yield 生成器。 1. chain 拼接迭代器 chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数: chain(*iterables) 使用方法: In [15]: from itertools import chain In [16]: a = chain(['This', 'is'], ["python", "q......

wohu1104的专栏 1699

【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——8:用zip函数同时遍历两个迭代器(zip-longest)

Effective Python——编写高质量Python代码的90个有效方法。

Dontla的博客 1098

zip_longest

zip_longest

Friedrichor的博客 808

python学习zip函数

Python version: 3.7.4 zip主要用于同时获取多了list的值 1.zip与for循环组合,获取多个列表的元素 country = ["English", "Chinese", "Japanese"] code = [44, 86, 81] for c, co in zip(country, code): print(c, co) 2.多个l...

u013783095的博客 250

python zip函数重复数据_Python用zip函数同时遍历多个迭代器示例详解

前言本文主要介绍的是Python如何使用zip函数同时遍历多个迭代器,文中的版本为Python3,zip函数是Python内置的函数。下面话不多说,来看详细的内容。应用举例>>> list1 = ['a', 'b', 'c', 'd']>>> list2 = ['apple', 'boy', 'cat', 'dog']>>> for x, y ...

weixin_39538500的博客 234

python中遍历列表字符串_遍历包含python中的字符串和列表的元组列表

你可以编写一个生成对的生成器:from itertools import zip_longestmaster_board_state = [('10S', []), ('3H', []), ('6C', ['KS', '9C']),('6H', []), ('7D', []), ('9S', ['AS', 'KS'])]def pairs(state):for (key, lst), nxt in...

weixin_34404671的博客 695

itertools.zip_longest(*[train] * 3)

import itertools with open(“static2011.txt”) as train: for a,b,c in itertools.zip_longest(*[train] * 3): print(a,b,c) 这个从文件中可以一次取三行,不知道为啥,大佬们可以解释一下吗

小峰的博客 461

Python zip函数的花样玩法

为了同时迭代多个序列,使用 zip() 函数 &gt;&gt;&gt; xpts = [1, 5, 4, 2, 10, 7] &gt;&gt;&gt; ypts = [101, 78, 37, 15, 62, 99] &gt;&gt;&gt; for x, y in zip(xpts, ypts): ... print(x,y) ... 1 101 5 78 4 37 2 15 10 62 7...

smart_liu8的博客 372
上一篇: .bat文件运行方式
下一篇: conda/pip降级pytorch版本的方法以及安装指定pytorch的方法
Charlotte_DL
博客等级 码龄10年 14粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值