首页 > 编程语言 >Effective Python:第8条 用zip函数同时遍历两个迭代器

Effective Python:第8条 用zip函数同时遍历两个迭代器

时间:2024-04-19 16:22:57浏览次数:24  
标签:count Effective zip Python max names longest name

用Python内置的zip函数来实现。这个函数能把两个或更多的iterator封装成惰性生成器(lazy generator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。

names = ["Cecilia", "Lise", "Marie"]
counts = [len(n) for n in names]


max_count = 0
for name, count in zip(names, counts):
    if count > max_count:
        longest_name = name
        max_count = count

print(longest_name)

当iterator长度不一致时,最短的遍历完不再遍历,原理:只要其中任何一个迭代器处理完毕,它就不再往下走了。

names = ["Cecilia", "Lise", "Marie"]
counts = [len(n) for n in names]


max_count = 0
names.append("Rosalind")
for name, count in zip(names, counts):
    if count > max_count:
        longest_name = name
        max_count = count

print(longest_name)  # 输出Cecilia

长度不一致时如何处理呢?zip_longest

import itertools


names = ["Cecilia", "Lise", "Marie"]
counts = [len(n) for n in names]


max_count = 0
names.append("Rosalind")
for name, count in itertools.zip_longest(names, counts):
    if count > max_count:
        longest_name = name
        max_count = count

print(longest_name)  
"""
输出:TypeError:
'>' not supported between instances of 'NoneType' and 'int'
原因:zip_longest按最长的遍历,其他长度不足的列表会以None代替
"""

是否可不用None,用特定的值?fillvalue

import itertools


names = ["Cecilia", "Lise", "Marie"]
counts = [len(n) for n in names]


max_count = 0
names.append("Rosalind")
for name, count in itertools.zip_longest(names, counts, fillvalue=0):
if count > max_count:
longest_name = name
max_count = count

print(longest_name)

标签:count,Effective,zip,Python,max,names,longest,name
From: https://www.cnblogs.com/guo126/p/18146224

相关文章

  • python tornado简易ws聊天室测试
    #-*-coding:utf-8-*-from__future__importunicode_literals,print_functionfromdatetimeimportdatetimeimporttornadofromtornado.optionsimportdefine,optionsfromtornado.websocketimportWebSocketHandler#设置服务器端口define("port",de......
  • python 获取文件夹下所有fbx文件的名字并保存到txt文件中
    代码:importosdefget_fbx_files_and_write_to_txt(folder_path,output_file_path):fbx_files=[]#遍历指定文件夹中的所有文件foriteminos.listdir(folder_path):item_path=os.path.join(folder_path,item)#检查是否为文件,并且......
  • 如何用Python构建一个生产级别的电影推荐系统 - 机器学习手册
    构建项目是彻底学习概念并发展必要技能的最有效方式之一。项目使您沉浸在现实世界的问题解决中,巩固您的知识,并培养批判性思维、适应能力和项目管理专业知识。本指南将带您逐步构建一个根据用户喜好量身定制的电影推荐系统。我们将利用一个庞大的包含10,000部电影的数据集作为......
  • 【百川大模型】RediSearch在python中的应用场景
    [本文出自天外归云的博客园]RediSearch是一个非常强大的全文搜索引擎,它可以与Python一起使用,为你的应用程序提供快速的搜索能力。以下是一些使用RediSearch的场景示例:场景一:商品搜索假设你正在开发一个电子商务网站,你需要为用户提供一个搜索框,让他们能够快速找到他们想要的商品......
  • 【小提示】指定Python版本以消除运行Ansible时显示的警告
    我正在编写Ansible手册来设置Mac。当我运行它时,我收到警告,所以我会调查它并分享我解决的问题。你好。我是AmazonWebServices团队的Sureing。最近,我的Mac键盘无法正常工作,我把它修好了。在此期间,将提供替换设备,但设置为默认设置。您可以手动更改设置,但让我们使用Ansible......
  • python基础之-sys模块、os模块基本介绍(未完成)
    背景介绍在自动化脚本中,经常会用到类似:sys.argv[1]和os.getenv("id")两种方式进行传参,为了便于区分,鉴于自己的理解进行一定记录,后续将继续补充。基本介绍一、sys模块它的很多属性描述程序的执行环境,是python的基础模块。*sys.argv:实现从程序外部向程序传递参数。*sys.a......
  • python使用pip安装模块出错 Retrying (Retry(total=0, connect=None, read=None, redi
    问题:在使用python时,使用pip安装psutil出错(pipinstallpsutil),错误信息:Retrying(Retry(total=0,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby‘SSLError(SSLError(1,u’[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfailed......
  • CTF中常见的四种python逆向
    说在前面:什么是pyc文件?pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种bytecode,py文件变成pyc文件后,加载的速度有所提高,pyc 文件是Python编译过的字节码文件。它是Python程序在运行过程中由源代码(通常是.py文件)自动或手动编译产生的二进制文件。而且pyc是......
  • 利用Python进行数据分析 原书第2版 (Wes McKinney)pdf下载
    链接:https://pan.baidu.com/s/18MOC0666S-EX_0ks4ivR2g提取码:rmkk本书由Pythonpandas项目创始人WesMcKinney亲笔撰写,详细介绍利用Python进行操作、处理、清洗和规整数据等方面的具体细节和基本要点。第2版针对Python3.6进行全面修订和更新,涵盖新版的pandas、NumPy、IPython......
  • 如何将 Python 项目打包成 exe,另带卸载功能!
    Python项目打包成exe前言虽然我是做web的,但是对Python的众多开源项目一直都很关注。像以前的stablediffusion的AI绘画,和so-vits-svc音色替换等源码的部署文档都很完善了。尽管如此,但对于刚入门的和本地环境搭建各种踩坑的同学,急于一试就显得不太友好了。针对这一现......