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函数 立即下载

相关推荐

【matlab】使用alexnet进行特征提取

1.下载alexnet工具箱 在命令栏输入alexnet,若不报错说明已经安装,若出现错误按照提示去下载工具箱; 下载地址:https://ww2.mathworks.cn/matlabcentral/fileexchange/59133-deep-learning-toolbox-model-for-alexnet-network (1)需要先注册(十分简单),登陆,下载; (2)下载完成之后,...

jingjingliang1995的博客 5846

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

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

weixin_33671935的博客 363

USB-Blaster在Win11报错?3分钟搞定驱动兼容性问题(Quartus 21.4实测)

本文针对Windows 11系统下USB-Blaster驱动安装问题,提供了一套快速解决方案。通过优化驱动安装流程、绕过签名验证及设备管理器高级技巧,帮助开发者在3分钟内解决Quartus 21.4的兼容性问题,提升FPGA调试效率。

weixin_30772105的博客 293

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

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

qq_45212655的博客 1049

嵌套交叉验证的‘双循环’哲学:为什么你的模型评估总是不准?

本文深入探讨了嵌套交叉验证(Nested Cross-Validation)在机器学习模型评估中的关键作用,揭示了传统交叉验证方法存在的偏差问题。通过双重循环设计,嵌套交叉验证有效隔离数据,提供无偏评估,显著提升模型在真实场景中的性能预测准确性。文章还提供了工程实践中的优化策略和量化分析,帮助开发者在计算成本与评估精度之间找到平衡。

b3n4m5q6w7的博客 225

伯德图逆向工程:用MATLAB从扫频数据中提取系统特性的5个关键步骤

本文详细介绍了使用MATLAB从扫频数据中提取系统特性的5个关键步骤,包括数据预处理、频响特性提取、相位解缠绕、系统特性反演和结果验证。通过伯德图逆向工程技术,工程师可以有效分析黑箱系统的频率响应特性,解决噪声干扰和相位跳变等实际问题,提升控制系统调试效率。

weixin_29081163的博客 199

组合并提取两个可迭代对象中相同位置的元素 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

解决创建conda环境时Solving environment: failed 和 ResolvePackageNotFound 的错误

环境配置文件是在别的机器上导出的,文件里的软件包是按照导出文件的机器配置的,因此导出的时候,把这些包的详细信息也导了出来,即第二个等号后面跟着的信息,当我们按照这个文件创建环境时,conda就会根据我们机器的配置信息,按照配置文件里包的详细信息,去找这个包,那当然找不到,结果发现“查无此包”,因此也就会报上面的错误。上面找到了问题的所在之处,解决起来就很简单了,只需要在配置文件 environment.yml 中将包的详细信息删除,也就是第二个等号后面的内容。然而升级超级慢不说,也没有解决我的问题。...

番茄炒蛋三分糖 4万+

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

HCIP-Cloud Service DevOps Engineer V2.0 华为认证云服务 DevOps高级工程师 章节测试题+结课测试题(模拟考试题)汇总

本文为HCIP-Cloud Service DevOps Engineer V2.0 华为认证云服务DevOps高级工程师 在线课程中所有章节测试以及结课测试(HCIP-Cloud Service DevOps Engineer模拟考试)习题和答案

gaogao0305的博客 2268

Zemax非序列模式新手入门:从零搭建一个抛物面反射镜系统(含灯丝光源与探测器设置)

本文详细介绍了如何在Zemax非序列模式下从零搭建抛物面反射镜系统,包括灯丝光源配置、反射镜建模和探测器设置等关键步骤。通过实战指南,帮助光学设计新手快速掌握非序列模式的应用技巧,特别适合处理复杂光线传播场景如反射镜系统和杂散光分析。

weixin_28717431的博客 436

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

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

2301_76287968的博客 760

【箱子之字形摆放】python实现-附ChatGPT解析

箱子之形摆放有一批箱子(形式为宁符串,设为str) ,要求将这批箱子按以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图:则输出结果为:AFGBECD输入一行字符串,通过空格分制,前面部分为字母或数字组成的字符串str,表示;后面部分为一个数字n,表示。ABCDEFG 3箱子摆放结果,如题目示例所示AFGBECD。

sinat_29950703的博客 371

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万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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、付费专栏及课程。

余额充值