给妹子讲python-S01E15迭代环境

简介:

Python中,从左到右扫描的每种工具都使用了之前介绍的迭代协议,都可以称之为迭代环境,如for循环表达式、列表解析式、in成员关系测试,map内置函数,sorted和zip等调用等,都可以传入一个可迭代对象,进行迭代。

Sorted对可迭代对象中的各项进行排序,zip对可迭代对象中的各项进行组合,enumerate对可迭代对象中的各项进行位置值配对,他们都接受一个可迭代对象作为参数。

同时zip、enumerate和filter调用的结果是返回一个可迭代对象,可以利用list函数调用来进行展现。只有sorted函数的结果是返回一个真正的列表。

 

print (sorted( open ( 'myfile.txt' )))

[ 'goodbyt text file\n' , 'hahahahah\n' , 'hello text file\n' ]

当然,还包括一些其他的内置方法,如sum,any,all,max,min都可以传入任何可迭代对象。本质是接受任何可迭代对象作为一个参数,并且使用迭代协议来扫描处理,并返回结果。

更扩展的来说,一般意义上,能从左到右的扫描一个对象的各种工具,实质上都在主体对象上使用了迭代协议,这么看的话,还包括了list和tuple、set内置函数,他们也是通过迭代协议扫描可迭代对象,构建新的对象。还有字符串join方法,它将一个子字符串放置到一个被包含在可迭代对象的字符串之间,这么想想,迭代的概念确实在python中无处不在,甚至包括赋值,也有这么点味道。看看下面分别举的几个例子。

 

print (list( open ( 'myfile.txt' )))

[ 'hello text file\n' , 'goodbyt text file\n' , 'hahahahah\n' ]
 

print (tuple( open ( 'myfile.txt' )))

( 'hello text file\n' , 'goodbyt text file\n' , 'hahahahah\n' )
 

print ( '&&' .join( open ( 'myfile.txt' )))

hello text file
&&goodbyt text file
&&hahahahah
 

a,b,c = open ( 'myfile.txt' )
print (a,b,c)

hello text file
goodbyt text file
Hahahahah

我们最后俩回顾一下列表解析式。列表解析式也是最常应用迭代协议的环境之一,他与for循环一起使用。

 

L = [ 1 , 2 , 3 ]
L1 = [x+ 3 for x in L]

Python在解释器内部执行一个遍历L的迭代,按照顺序把X赋给每个元素,并且对各元素运行左边的表达式,并将结果收集为一个列表,我们得到的结果列表就是列表解析所表达的内容,上面的例子中包含了针对L中每个元素x运行x+3的一个新列表。这种列表解析的方式比手动的for循环更快,因为他们的迭代在解释器内部是以C语言的速度执行的。

 

lines = [line.rstrip() for line in open ( 'myfile.txt' )]
print ( lines )

[ 'hello text file' , 'goodbyt text file' , 'hahahahah' ]

【妹子说】这几节可是被迭代二字反复轰炸呀,先介绍了循环迭代的基本用法和高级技巧,然后介绍了迭代协议、可迭代对象以及迭代器,最后学习了迭代环境。

对,内容不少啊。最后我们再次总结一下可迭代对象的好处:

如果函数返回的结果是可迭代对象,那么他意味着是根据请求依次一个一个的返回结果,而不是一次性的构建整个列表。这可以节约内存,根据需要产生结果。这对较大的程序来说很有用,在计算很大的结果列表的时候,像这样做,能很好的节约内存。

本节介绍的字典的一些方法keys、values、items以及内置函数range、map、zip、filter都是如此,他们都会返回可迭代对象。

根据需要产生数据,而不是在内存中构建一个结果列表,从而达到节约内存空间的目的,这是可迭代对象最重要的好处。


原文发布时间为:2018-08-27

本文作者:给妹子讲python

本文来自云栖社区合作伙伴“Python爱好者社区”,了解相关信息可以关注“Python爱好者社区”。

相关文章
|
7月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
541 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
7月前
|
Python
在VScode环境下配置Python环境的方法
经过上述步骤,你的VSCode环境就已经配置好了。请尽情享受这扇你为自己开启的知识之窗。如同你在冒险世界中前行,你的探索之路只有越走越广,你获得的知识只会越来越丰富,你的能力只会越来越强。
724 37
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
1776 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
11月前
|
Shell Linux Ruby
Python3虚拟环境venv
`venv` 是 Python 的虚拟环境工具,用于为不同项目创建独立的运行环境,避免依赖冲突。通过 `python3 -m venv` 命令创建虚拟环境,并使用 `source bin/activate` 激活。激活后,所有 Python 包将安装在该环境中,不影响系统全局环境。退出环境使用 `deactivate` 命令。每个虚拟环境拥有独立的包集合,确保项目间的隔离性。删除虚拟环境只需删除其目录即可。
1077 34
|
9月前
|
Java API Docker
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
|
11月前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
286 1
|
11月前
|
Shell 程序员 开发者
轻松搞定在Python中构建虚拟环境
本教程教你如何使用业界公认的最佳实践,创建一个完全工作的Python开发环境。虚拟环境通过隔离依赖项,避免项目间的冲突,并允许你轻松管理包版本。我们将使用Python 3的内置`venv`模块来创建和激活虚拟环境,确保不同项目能独立运行,不会相互干扰。此外,还将介绍如何检查Python版本、激活和停用虚拟环境,以及使用`requirements.txt`文件共享依赖项。 通过本教程,你将学会: - 创建和管理虚拟环境 - 避免依赖性冲突 - 部署Python应用到服务器 适合新手和希望提升开发环境管理能力的开发者。
750 2
|
11月前
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
415 2
|
11月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
269 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
12月前
|
机器学习/深度学习 Rust 算法
Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
近期Python生态系统在包管理领域发生了重要变化,Anaconda调整商业许可证政策,促使社区寻找更开放的解决方案。本文介绍两款新一代Python包管理工具:UV和Pixi。UV用Rust编写,提供高性能依赖解析和项目级环境管理;Pixi基于Conda生态系统,支持conda-forge和PyPI包管理。两者分别适用于高性能需求和深度学习项目,为开发者提供了更多选择。
2625 2

推荐镜像

更多