首页 > 编程语言 >effective python

effective python

时间:2022-11-24 22:55:23浏览次数:38  
标签:函数 zip python effective else 迭代 表达式 赋值

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

内置的zip函数可以同时遍历多个迭代器。
zip会创建惰性生成器,让它每次只生成一个元组,所以无论输入的数据有多长,它都是一个一个处理的。
如果提供的迭代器的长度不一致,那么只要其中任何一个迭代完毕,zip就会停止。
如果想按最长的那个迭代器来遍历,那就改用内置的itertools模块中的zip_longest函数。

  • 这个函数能把两个或更多的iterator封装成惰性生成器(lazy generator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。而这个元组可以拆分到for语句里的那些变量之中(参见第6条)
  • 在列表长度不同的情况下,zip函数的提前终止行为可能跟你想实现的效果不一样。所以,如果无法确定这些列表的长度相同,那就不要把它们传给zip,而是应该传给另一个叫作zip_longest的函数,这个函数位于内置的itertools模块里
import itertools

for name, count in itertools.zip_longet(names, counts):
	print(f'{name}: {count}')

第9条 不要在for与while循环后面写else块

Python有种特殊的语法,可以把else块紧跟在整个for循环或while循环的后面。
只有在整个循环没有因为break提前跳出的情况下,else块才会执行。
把else块紧跟在整个循环后面,会让人不太容易看出这段代码的意思,所以要避免这样写。

第10条 用赋值表达式减少重复代码

赋值表达式通过海象操作符(:=)给变量赋值,并且让这个值成为这条表达式的结果,于是,我们可以利用这项特性来缩减代码。
如果赋值表达式是大表达式里的一部分,就得用一对括号把它括起来。
虽说Python不支持switch/case与do/while结构,但可以利用赋值表达式清晰地模拟出这种逻辑。

标签:函数,zip,python,effective,else,迭代,表达式,赋值
From: https://www.cnblogs.com/xchenblogs/p/16923754.html

相关文章

  • Python爬虫学习-cnblog
    Python爬虫学习Python的文件操作序列化与反序列化通过文件操作,我们可以将字符串写入到一个本地文件。但是如果是一个对象(列表、字典、元组等),就无法直接写入到一个文件中......
  • Python实验报告(第12章)
      实验12:GUI界面编程一、实验目的和要求1、学会应用常用控件;2、学会使用BoxSizer布局;3、学会事件处理。二、实验环境软件版本:Python3.1064_bit三、实验过程......
  • 【解决】python获取文件大小,下载进度条报错KeyError: 'content-length'
    python3使用requesthttpx下载文件,获取不到文件大小,response没有content-lengthheader最简单的排查问题的办法就是用浏览器去下载如果浏览器在下载时,也不显示总大小,那......
  • python_03('python基础学习笔记')
    #读取student_grade_input.txt文本文件内容datas=read_file()print("read_filedatas:",datas)#对读取出来的内容可以进行排序datas=sort_grades(datas)print("sort_......
  • 进入python的世界_day38_数据库——mysql约束条件、表关系
    一、字段约束条件1.无负号​ unsignedcreatetablet(idintunsigned);#不能添加负数2.零填充​ zerofillcreatetablet(idintzerofill);#填入得数据展......
  • python_list列表
     列表list关键字in和notin用来判断元素是否包含在列表list中,str也能使用list_city01=["北京","北京","杭州"]#判断数据在列表中print("北京"inlist_ci......
  • HDU:1091 的 python3 和 golang 实现
    python3defhdu_1091():whileTrue:s=input("input")s1=s.split("")ifs1[0]=="0"ands1[1]=="0":break......
  • python_02
    #(实用技能)按照文件后缀名整理文件夹#怎么获取文件的后缀名:importos#os.path.splitext("/path/to/aaa.mp3")#输出:(“/path/to/aaa“,......
  • HDU:1090 的 python3 和 golang 实现
    python3defhdu_1090():a=int(input(""))whilea!=0:s=input("input")s1=s.split("")print(int(s1[0])+int(s1[1]))......
  • python入门基础之主键、外键、约束条件
    python入门基础之主键、外键、约束条件目录python入门基础之主键、外键、约束条件字段约束条件主键自增外键前戏关系的判断外键字段的建立多对多关系一对一关系字段约束......