Python循环的技巧

2023-11-16

Python的for循环是coder最常用的语句之一,如果只是简单地对容器循环遍历,那便会少了很多美好的体验。像下面这样:

for i in range(10):        print(i)

python提供了很多用于循环的技巧,这些方法能让代码更加简洁美观,这次就来扒一扒。

 

1、enumerate()函数

当遍历一个非数值序列时,有时候会需要将元素和索引一起取出,这时候便可以用到enumerate()函数。

enumerate()函数接受一个序列或者迭代器,返回一个元组,里面包含元素及其索引数值。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']>>> list(enumerate(seasons))[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

你还可以通过调整start参数,规定序列数值的起始值:

>>> list(enumerate(seasons, start=1))[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

 

这时候用for循环遍历enumerate()函数包装后的序列,就能得到元素及其索引值:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):... print(i, v)...0 tic1 tac2 toe

 

2、字典item()方法

遍历字典时,如果直接遍历字典对象,只能得到字典中的键:

​​​​

>>> sample = {'a':1,'b':2,'c':3}>>> for i in sample:... print(i)...abc

 

如果使用字典的items()方法,便可以同时输出键和对应值:

>>> sample = {'a':1,'b':2,'c':3}>>> for i in sample.items():... print(i)...('a', 1)('b', 2)('c', 3)

 

3、zip()函数

zip()函数接收一个或多个可迭代对象,并将各个迭代对象对应的元素聚合,返回一个元组的迭代器。

>>> x = [1, 2, 3]>>> y = [4, 5, 6]>>> zipped = zip(x, y)>>> list(zipped)[(1, 4), (2, 5), (3, 6)]

 

当同时在两个或更多序列中循环时,可以用 zip() 函数将其内元素一一匹配。

>>> color = ['white','blue','black']>>> animal = ['cat','dog','pig']>>> for i in zip(animal,color):... print(i)...('cat', 'white')('dog', 'blue')('pig', 'black')

 

4、sorted()函数

当你需要对列表先进行排序再循环遍历时,就需要用到sorted()函数。

sorted()函数接收一个可迭代对象,返回一个排序好的列表。

除此之外,sorted()函数还有两个参数:key和reverse

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。默认值为 None (直接比较元素)

 

reverse 为一个布尔值。如果设为 True,则每个列表元素将按反向顺序比较进行排序。

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']>>> for f in sorted(set(basket)):... print(f)...applebananaorangepear

 

5、reversed()函数

reversed()函数用于对可迭代对象中的元素进行反向排列,返回一个逆向的迭代器。

>>> list(reversed([2,5,3,9,6]))[6, 9, 3, 5, 2]

for循环遍历reversed()函数包装的可迭代对象,便可以反向取数。

>>> for i in reversed([2,5,3,9,6]):... print(i)...69352

 

总结:

五个用于for循环的小技巧,它们分别是enumerate()、item()、zip()、sorted()、reversed(),这些方法函数不仅让循环更加简洁,更能用在其它诸多的代码中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python循环的技巧 的相关文章

随机推荐

  • MySQL 索引原理

    MySQL索引深入剖析 官方定义是 索引 Index 是帮助MySQL高效获取数据的数据结构 简单来说 索引是一种数据结构 以协助快速查询 更新数据库表中数据 索引的基本原理 把创建索引列的内容进行排序 对排序的结果生成倒排表 在倒排表内容
  • 关于 ag-grid 的调研之路

    前言 因为公司业务需要 需要对 ag grid数据网格进行调研 随后就开始了漫长的探索之路 废话不多说直接撸干活 ag grid 简介 AG Grid是一个功能齐全 高度可定制的JavaScript数据网格 它提供了卓越的性能 没有第三方依
  • disruptor高性能环形队列

    简介 说到Disruptor 首先需要谈谈LMAX 它是欧洲第一家也是唯一一家采用多边交易设施Multilateral Trading Facility MTF 拥有交易所牌照和经纪商牌照的欧洲顶级金融公司 它们所构建的金融交易平台 建立在
  • An error occured, please see below or look at Nuxt.js terminal for more info. Error: EACCES: permiss

    这个问题应该就是mac会遇到 把npm run dev 前面加个sudo sudo npm run dev 就可以了
  • 《人工智能导论》 第1章 绪论&第2章 知识表示&第3章 确定性推理方法&第4章 不确定推理方法

    绪论 人工智能的基本概念 智能的概念 目前对智能还没有确切的定义 主要流派有 思维理论 智能的核心是思维 认为通过对思维规律与方法的研究可揭示智能的本质 知识阈值理论 智能取决于知识的数量及一般化程度 认为智能是在巨大的搜索空间中迅速找到满
  • 华为机试training-03

    蛇形矩阵 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形 例如 当输入5时 应该输出的三角形为 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 其具体实现代码如下 include
  • mybatits的PageHelper分页工具的使用

    最近开发一个后台管理系统 有一些东西记录一下 之前都是没有这个工具之前都是传递参数到xml进行分页查询 1 首先导入一些可能导入的包
  • Java 集合深入理解 (十一) :HashMap之实现原理及hash碰撞

    文章目录 前言 哈希表原理 实现示例 HashMap实现原理 全篇注释分析 实现注意事项 默认属性分析 属性分析 构造方法分析 重要的put方法 总结 前言 哈希表 hashMap 又叫散列表 是一种非常重要的数据结构基于map接口实现 应
  • STM32 MCP2515连发 多发 MCP2515收发程序 多路CAN通信 2路CAN

    MCP2515在发送数据时 如果通信速率较低一切都正常 但是当通信速率较高 比如1M时 发送一帧数据后 MCP2515有时会出现自动重复发送多帧数据的情况 为解决这现象 请参照官方给的 MCP2515勘误手册 第5条 给出了解决CAN速率较
  • IDEA正则表达式高级替换

    1 需求 需要将如下注释转换成另外一个形式 员工姓名 private String name 员工姓名 private String name 2 在idea中输入正则表达式进行快速替换 3 具体的正则表达式如下 替换前正则 替换后正则 1
  • openGL之API学习(二零二)glsl的smooth flat

    采用flat着色时 OpenGL将使用图元中某个顶点的颜色来渲染整个图元 通常情况下会选择图元的第一个或最后一个顶点的颜色作为该图元的颜色 在使用smooth着色时 OpenGL会独立的处理图元中各个顶点的颜色 对于线段图元 线段上各点的颜
  • 电子信息工程专业毕设题目选题推荐

    文章目录 1前言 2 如何选题 3 选题方向 2 1 嵌入式开发方向 2 2 物联网方向 2 3 移动通信方向 2 4 人工智能方向 2 5 算法研究方向 2 6 移动应用开发方向 2 7 网络通信方向 3 4 学长作品展示 4 最后 1前
  • Oracle开窗分析函数,Oracle 惯用的分析开窗函数

    SELECT T EMAIL USER NAME COUNT OVER PARTITION BY T EMAIL MAIL ORDER BY T EMAIL TEL DESC C FROM T BASE EMAIL T SELECT T E
  • python startswith与endswith

    python startswith与endswith 如果你要用python匹配字符串的开头或末尾是否包含一个字符串 就可以用startswith 和endswith 比如 content ilovepython 如果字符串content以
  • 以模板的方式重载"operator <<"需要注意的地方

    当我们用C 进行后台开发的时候 常常需要知道某一时刻一个容器的内容 通常 我们的做法是利用迭代器将容器内容打印到日志文件中 然后进行观察分析 如果每次打印都去找迭代器的麻烦 显然不是我们想要的 这样 顺理成章的我们就想到了封装函数 为了更方
  • Vue3 —— 使用Vite配置环境变量

    文章目录 一 为什么要配置环境变量 二 在Vite中配置环境变量 1 环境变量和模式 2 环境变量 3 生产环境替换 4 env 文件 总结 一 为什么要配置环境变量 在一个产品的前端开发过程中 一般来说会经历本地开发 测试脚本 开发自测
  • Spring boot定制个性化banner(七彩佛祖版)

    1 在项目的src main resources目录下创建banner txt文件 2 创建完成banner txt文件后 即可以在文件中放入需要自定义的任意字符图案 本次以佛祖图案为例 代码直接复制放到banner txt文件即可 不用做
  • 2021年蓝桥杯Python常见考点【持续更新ing】

    目录 一 常用技巧 一 输入输出 1 一行输入数值 2 多行输入 二 列表 1 存储多行 用 2 从多行数字 转变为二维列表 3 怎样将以下列表转化为整数 三 元组 四 集合 二 常见内置函数 一 itertools 二 数学函数 三 数据
  • Redis主从复制与Redis集群

    Redis主从复制与Redis集群 前言 一 主从复制 1 是什么 2 能干嘛 3 怎么玩 主从复制 4 新建redis conf配置文件 5 主从集群常用3种 1 主从模式一 一主二从 2 主从模式二 薪火相传 3 主从模式三 反客为主
  • Python循环的技巧

    Python的for循环是coder最常用的语句之一 如果只是简单地对容器循环遍历 那便会少了很多美好的体验 像下面这样 for i in range 10 print i python提供了很多用于循环的技巧 这些方法能让代码更加简洁美观