惯用Python的5个技巧(循环)

5个小技巧,让你的for循环瞬间高大上! 全文共1898字,预计学习时长10分钟 图源:digitalocean 或许每个初学Python的程序员最早接触的概念中都有For循环,这一点理所当然, for循环可以在不费吹灰之力的情况下对数据执行很多操作。 然而,大量的使用for循环也可能会让使用者的思维拘泥于简单的迭代中,而忽略了一些更加高效且简洁的迭代方法。 如何让你的for循环告别繁复拥抱简洁,如... 阅读详情

在这篇文章中,你将看到5种方法可以使你的python循环更习惯,运行得更快,内存效率更高。

img

在我看来,Python是计算机科学中最简单、最通用的语言之一。如果你正确地编写python代码,很难区分python代码和伪代码。但有时,在编写最漂亮的python代码的过程中,大多数开发人员会忘记一件事:代码的执行速度。

您可以编写可读性非常强的代码,而外行可能会将其混淆为语法技能较差的人所写的英语,但它是可以理解的。但该代码需要超过300毫秒才能运行。这可能不会造成太大的延迟,但在编程领域,这是一个严重的问题。

另一方面,可以用不同的习惯用法编写相同的代码,运行所需时间少于10毫秒。但是,即使是专业的python开发人员也很难理解它。

因此,对于开发人员来说,在这两个极端之间取得平衡是非常重要的。这些类型的代码在业界被称为惯用代码。

根据定义,惯用代码是一种用您的语言的通用方式执行通用任务的代码。换句话说,惯用代码是任何易于阅读,同时又非常高效的代码。

我在twitter上经常关注Raymond Hettinger (@raymondh),他是Python社区的核心开发人员之一,他为Python存储库贡献了大量代码,使Python语言更加习惯化。

在本博客中,我将介绍一些帮助您改进python代码的技术。开始:

◆a. range()

让我们从最明显的开始,假设你需要从2迭代到10。所以如果你是一个绝对的初学者,你可能会写这样的东西:

for i in [2,3,4,5,6,7,8,9,10]:
    print(i)

这样的方法是可行的,也是可以理解的,它不是一个可扩展的方法。如果你想循环2到200万呢。

在这种情况下,可以使用range(stop)或range(start, stop, [step,])内置函数。

range函数自动为您生成列表。例如,你可以将上面的代码改写为:

for i in range(2, 11):
    print(i)

注意我是怎么写的,从2开始到11结束,而不是10。这是因为range函数循环到stop - 1。在距离函数中除了开始和停止还有一个参数,那就是步长。步长决定范围必须跳过多少个数字。

假设您需要打印从2到10的所有偶数,在这种情况下,skip参数将为2。缺省值是1。

for i in range(2,11,2):
    print(i)

# OUTPUT: 2 4 6 8 10

现在假设您需要遍历一个列表。有了range()的知识,你可以这样做:

cloths = ['shirt', 'hat', 'socks', 'shorts']

for i in range(len(cloths))
    print(cloths[i])

但在python中,有更好的方法:

cloths = ['shirt', 'hat', 'socks', 'shorts']

for cloth in cloths
  print(cloth)

◆b. zip()

假设你有两个不同尺寸的列表,颜色和布料,你想要配对它们,直到较小的列表结束。在这种情况下,你可以写这样的代码:

colours = ['pink', 'red', 'green']
cloths = ['shirt', 'hat', 'socks', 'shorts']

n = min(len(colours), len(cloths))
for i in range(n):
    print(colours[i], cloths[i])

# OUTPUT
# pink shirt
# red hat
# green socks

这很好,但你也可以使用内置函数zip(*iterables)。这个函数最好的一点是,你可以传递任意数量的列表,而不仅仅是两个。让我重写上面的代码,然后向您解释zip是如何工作的。

colours = ['pink', 'red', 'green']
cloths = ['shirt', 'hat', 'socks', 'shorts']

for colour, cloth in zip(colours, cloths):
    print(colour, cloth)

# OUTPUT
# pink shirt
# red hat
# green socks

您可能已经猜到,zip接受任意数量的列表并返回包含每个列表中的一个元素的另一个列表。如您所见,两个版本产生相同的输出,但第二个版本看起来更干净。

◆c. reversed()

如果你想反向循环一个列表,传统的方法是这样的。

cloths = ['shirt', 'hat', 'socks', 'shorts']

for i in range(len(cloths)-1, -1, -1):
    print(cloths[i])
    
# Output
# -------
# shorts
# socks
# hat
# shirt

但是在Python中,您可以使用名为reversed()的内置函数。看看这个例子:

cloths = ['shirt', 'hat', 'socks', 'shorts']

for cloth in reversed(cloths):
    print(cloth)
    
# Output
# -------
# shorts
# socks
# hat
# shirt

第二个比第一个更干净更快。

◆d. enumerate()

您希望循环通过一个列表和索引。这在传统编程中非常直接:

cloths = ['shirt', 'hat', 'socks', 'shorts']

for i in range(len(cloths)):
    print(i, cloths[i])

# Output
# -------
# 0 shorts
# 1 socks
# 2 hat
# 3 shirt

但在python中有一种更干净、更有效的方法:

cloths = ['shirt', 'hat', 'socks', 'shorts']

for i, cloth in enumerate(cloths):
    print(i, cloth)

# OUTPUT
# -------
# 0 shorts
# 1 socks
# 2 hat
# 3 shirt

◆e. sorted()

您需要按排序顺序遍历列表,而不是运行排序算法,您可以使用sorted()内置方法。

-in method.

nums = [2,3,1,5,2]

for i in sorted(nums):
    print(i)

# OUTPUT
# ------
# 1
# 2
# 2
# 3
# 5

python排序函数使用Tim Sort,其平均复杂度为n*log(n)

对于反向排序,可以使用sorted属性(nums, reverse=True)

你想对字符串列表排序。

cloths = ['shirt', 'hat', 'socks', 'shorts']

for cloth in sorted(cloths):
    print(cloth)

# OUTPUT
# ------
# hat
# shirt
# shorts
# socks

它会根据字母排序,但如果你想根据字符串的长度排序,你可以用key attribute。例如:

cloths = ['shirt', 'hat', 'socks', 'shorts']

for cloth in sorted(cloths, key=len):
    print(cloth)

# OUTPUT
# ------
# hat
# shirt
# socks
# shorts

以上就是5种可以让你的python代码更习惯的技巧。

图片

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

【Python】循环的技巧 好的,我们现在将开启一个全新且极为深入的系列,专注于“Python 的循环技巧”。我将严格按照您的要求,以前所未有的深度和广度,剖析其内部机制、高级应用、性能优化、迭代器协议、生成器、异步循环,以及在复杂真实场景(如数据处理、算法实现、并发编程、Web 开发等)中的应用之道,并辅以大量详尽的代码示例,力求达到信息量和深度的极致。内容将从 Python 循环的基础语法和类型开始,逐步深入到各种高级技巧、内置函数的巧妙运用、迭代工具模块 () 的威力,以及如何编写高效、可读、Pythonic 的循环代码。在深入 阅读详情

相关推荐

Python嵌套循环与多层循环的优化技巧

本文探讨了Python中嵌套循环的优化技巧,从基础到高级策略,旨在提升代码性能。首先,文章分析了嵌套循环的基本结构和时间复杂度,指出随着循环层数增加,性能呈指数级下降。接着,介绍了基础优化技巧,如提前终止循环、减少内层循环工作量和循环展开。中级优化策略包括使用itertools库、缓存计算结果和并行化处理。高级优化技术则涉及数据结构优化(如使用NumPy数组)、算法优化(如利用问题特性减少循环)和JIT编译优化(如使用Numba库)。通过这些方法,开发者可以显著提升嵌套循环的效率,同时保持代码的可维护性。

记录学习的过程 1104

python循环语句使用技巧

对于while循环和for循环这两种循环语句,我个人的选择是——给定数据集中循环用for,寻找目标结果时用while。另外,我还扩展了列表推导式;map()函数;生成器表达式;filter()函数的一些基础使用技巧。

weixin_66485159的博客 890

在 Python 中跳出嵌套循环的 5 种方法

我们都知道,Python 是一种优雅的编程语言。但任何事物都有弱点。有时,Python 并不那么优雅。关键字keyword只能帮助我们跳出最内层的循环inner-most loop。我们能直接同时跳出两个嵌套循环two nested loops吗?Python 中是否有一些内置关键字built-in keywords或技巧tricks?遗憾的是,该操作没有内置支持no built-in support。俗话说:“比较是快乐的小偷comparison is the thief of joy”。

Null的博客 3104

Python - 代替for循环的方法汇总(持续更新)

1. 列表解析 创建列表: squares = [] for value in range(1, 11): squares.append(value**2) 可用如下代码代替: squares = [value**2 for value in range(1,11)] 2. 利用map函数,操作列表中的每一个元素 map函数基本语法如下: map(function, iterable...

红泥小火炉 2万+

python chapter 5 循环 Loop

For 循环用于指定范围的重复操作。range()可以生成一个数字范围。在不知道循环什么时间停止的时候,应该试试 While 循环。循环同样也是可以嵌套的。巧妙地使用break和continue语句。合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率。

yangshejun的博客 977

【Python入门】5大Python循环技巧:你真的掌握了吗?

循环是一种重复执行某段代码的结构,直到满足某个条件为止。通过循环,可以避免重复编写相同的代码,使程序更加简洁和高效。for循环用于遍历序列(如列表、元组、字符串等)或其他可迭代对象,每次迭代处理一个元素。while循环用于在条件满足时重复执行一段代码,直到条件不再满足为止。else子句可以与for或while循环一起使用,当循环正常结束(即没有被break语句中断)时执行。定义for循环用于遍历序列或其他可迭代对象,每次迭代处理一个元素。作用for循环适用于已知迭代次数的情况,使代码更加简洁和易读。

java专栏 1052

Python笔记7:循环技巧和控制语句

循环技巧当遍历字典的时候,可以同时使用items()方法检索>>> knights = {"galahad":"the pure","robinhood":"the brave","guan yu":"loyal"} >>> for k,v in knights.items(): print(k,v) galahad the pure robinhood the brave guan yu

TaoYuan 1485

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

u012831187的博客 1万+

python 循环技巧

关于循环的小伎俩 不管是while还是for,所发起的循环,在python编程中是经常被用到的。特别是for,一般认为,它要比while快,而且也容易写(是否容易,可能因人而异,但是,执行时间快,是的确的),因此在实践中,for用的比较多点,不是说while就不用,比如前面所列举而得那个猜数字游戏,在业务逻辑上,用while就更容易理解(当然是限于那个游戏的业务需要而言)。另外,在某些情况下,fo...

hiekay的博客 892

对称加密和非对称加密、公钥和私钥、单向认证和双向认证、数字签名、数字证书、根证书

文章目录1. 什么是公钥和私钥?2. 加密算法2.1 对称加密2.2 非对称加密2.2.1 非对称加密的重要性质2.2.2 非对称加密算法应用2.2.2.1 应用1 加密通信2.2.2.1.1 单向认证和双向认证2.2.2.1 应用2 数字签名3. 数字签名3.1 数字签名用法演示3.2 数字签名存在问题4. 数字证书(Digital Certificate)4.1 创建数字证书4.1.1 举例,CA如何给我们签发一个有效证书: 1. 什么是公钥和私钥? 摘自《什么是公钥和私钥?》 公钥(Public Ke

m0_45406092的博客 1万+

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

Python入门-循环技巧介绍

本篇文章给大家带来的内容是关于Python循环的技巧介绍,有一定的参考价值. 本文摘自千锋教育《Python快乐编程》 当在字典中循环时,用 items() 方法可将关键字和对应的值同时取出 >>> knights = {'gallahad': 'the pure', 'robin': 'the brave'} >>> for k, v in knights....

flower_517的博客 265

FPGA实战:用DDR3和乒乓操作解决视频帧撕裂问题(附Verilog代码)

本文详细介绍了如何利用DDR3内存和乒乓操作架构解决FPGA视频处理中的帧撕裂问题。通过多帧缓存原理、AXI接口配置和自适应乒乓操作设计,有效隔离读写操作,确保视频流稳定传输。文章包含Verilog代码实现和性能优化技巧,适用于工业相机、医疗影像等高速视频处理场景。

m2n3b4v5c6的博客 289

最全面的Python开发中有关for循环嵌套的使用技巧

For语句和while语句一样,也可以把它放在另一条复合语句里面。而且for语句本身就是一条语句,它里面不但可以嵌套while语句、if语句等,其它语句也可以包含在里面。那么什么是for语句嵌套呢?它与continue组合在一起使用,程序之间会有什么差别呢?下面,请跟着小编一起,去探索一下for语句嵌套的奥秘。 一:for语句嵌套 1、for语句内部可以放任意语句,包含for语句和while语句。...

Python最详细教程 1万+

Unity URP半透明物体深度排序优化:解决自交叠渲染瑕疵

本文深入探讨了Unity URP管线中半透明物体深度排序的优化方法,重点解决自交叠区域的渲染瑕疵问题。通过双通道渲染、深度预写入、多通道渲染等核心技术,结合实战案例和性能数据,帮助开发者实现高质量的透明效果渲染。

weixin_30879169的博客 418

基于物联网技术设计的微型消防小车控制系统(STM32+ESP8266局域网)(181)

基于物联网技术的小微型消防车控制系统。通过远程控制功能,用户能够灵活操作消防车的行驶,方便快速抵达火灾现场。环境感知功能实时采集烟雾浓度、温湿度信息,为灭火决策提供科学依据。火源定位功能采用自动和手动两种模式,准确迅速地定位火源,并通过报警提示用户。灭火功能则根据火源定位结果,自动或手动启动干粉灭火器进行高效灭火。这些功能的结合实现了对小型火灾的全面应对,提升了消防效率与安全性,减少了火灾带来的损失。通过本项目的设计与实现,为消防领域提供了一种创新且实用的解决方案。

3079

在python的List中使用for循环语句的技巧汇编

for循环是最常用的循环语句,在各种高级编程语言中都会被频繁使用,在python中也不例外, 除了常规的for循环或者嵌套的for循环语法以外,python还有一种精巧的list内的for循环语句的语法,如果能熟练掌握这种语法对提高编程的效率有很大的帮助,今天我给大家我给大家分享一些我收集的关于list内使用for循环的小技巧,希望对大家有所帮助: 1. 简单替换for循环 它的主要语法结构如下: my_list=[ 表达式 for 循环项 in 循环体 (if 条件) ] 这里表达式可以为循环项,

weixin_42608414的博客 7万+

Open3D 计算FPFH特征【2025最新版】

FPFH特征描述子的python实现,本文最新更新时间为:2025年3月18日。

点云侠的博客 5273

【总结】分析Python中的循环技巧

【总结】分析Python中的循环技巧 循环结构是在开发中应用比较广泛的一种结构,那么在Python中,有哪些循环的技巧呢 1、range函数 range函数表示一个不变的数字序列,经常与for循环结合使用。 举例: for i in range(0,10) : print(i) 2、items方法 在循环遍历字典时,关键字和对应的值可以使用items方法同时得到。 举例: dict...

菜鸟的后花园 2519

JavaFX 表视图

我们可以使用来自 JavaFX API 的 TableView,TableColumn 和 TableCell 类以表格形式表示数据。通过实现数据模型和应用单元工厂来填充表中的数据。表类可以按列排序数据,并在必要时调整列大小。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 404

STM32F407中文手册

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

Python循环的技巧

Python中的循环结构是编程中不可或缺的一部分。掌握并灵活运用各种循环技巧不仅可以提高编程效率,还能使代码更加简洁、易读和可维护。从基本的for和while循环到更高级的列表推导式和生成器表达式,再到循环的优化和性能提升策略,每一个技巧都值得深入学习和实践。希望本文的介绍能为你在Python编程中的循环使用提供有力的支持。

Python老吕的博客 1043

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python循环5次_python循环5次

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!我们不可能一个一个的去加,为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。 for----python的循环有两种,一种是for... in循环,依次把list或tuple中的每个元素迭代出来,的特点是容易使用 需要明确循环次数。 看例子:names = for name...

weixin_39562089的博客 5503

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python循环技巧全攻略

通过编写带有yieldyield nn -= 1print(i)在本篇文章中,深入研究了Python中丰富而强大的循环技巧,包括高级的for循环用法、while循环的技巧、列表推导式、迭代器与生成器、循环中的异常处理、性能优化、并发处理、装饰器的应用以及数据可视化等方面。通过大量的示例代码,能够更加全面地理解这些技巧的实际应用场景,并能够在编写Python代码时更加灵活和高效地使用循环结构。从性能优化到数据可视化,从异步处理到异常处理,本文覆盖了循环的众多应用领域。

涛哥聊Python 1269

python循环函数_一文搞懂Python循环小技巧

Python的for循环是coder最常用的语句之一,如果只是简单地对容器循环遍历,那便会少了很多美好的体验。像下面这样:for i in range(10):print(i)python提供了很多用于循环的技巧,这些方法能让代码更加简洁美观,这次就来扒一扒。enumerate()函数当遍历一个非数值序列时,有时候会需要将元素和索引一起取出,这时候便可以用到enumerate()函数。enumer...

weixin_39796116的博客 1702

Python基础 - while循环的条件设置技巧

while循环的条件设置,远不止是语法技巧——它是问题分解能力的体现。每个条件表达式,都是你对业务逻辑的精准建模;每次循环迭代,都是程序与现实世界的对话。从温度监控到太空探索,从电商系统到AI训练,while循环默默驱动着数字世界的脉搏。本文的7大技巧,不是终点,而是起点。改造旧代码,用布尔变量替换复杂条件为现有循环添加“安全网”(技巧2)将条件逻辑封装成函数(技巧6)优秀的条件设置,让循环成为解决问题的杠杆,而非制造问题的陷阱。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: 10个实用的Python自动化脚本!
下一篇: 适合 Python 入门的 8 款强大工具
我爱学大模型
博客等级 码龄3年 7883粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值