当前位置: 首页 > news >正文

Python 教程之控制流(4)Python 中的循环技术

Python 在各种顺序容器中通过某些内置函数支持各种循环技术。这些方法主要在竞争性编程中非常有用,在各种需要特定技术的项目中也非常有用,这些项目需要使用循环来维护代码的整体结构。由于不需要声明我们在传统循环方法中声明的额外变量,因此节省了大量时间和内存空间。

它们在哪里使用?

不同的循环技术主要在我们不需要实际操作整个容器的结构和顺序的地方很有用,而只是打印单个使用实例的元素,容器中不会发生就地更改。这也可以在实例中使用以节省时间。

使用 Python 数据结构的不同循环技术是: 

方式 1:使用 enumerate():  enumerate() 用于循环打印索引号以及该特定索引中存在的值的容器。

# 演示 enumerate() 工作的 python 代码

for key, value in enumerate(['The', 'Big', 'Bang', 'Theory']):
	print(key, value)

输出:

0 The
1 Big
2 Bang
3 Theory
# 演示 enumerate() 工作的 python 代码

for key, value in enumerate(['Geeks', 'for', 'Geeks',
							'is', 'the', 'Best',
							'Coding', 'Platform']):
	print(value, end=' ')

输出:

Geeks for Geeks is the Best Coding Platform 

方式 2:使用 zip():  zip() 用于组合 2 个相似的容器(list-list 或 dict-dict)按顺序打印值。循环只存在到较小的容器结束。可以在此处找到 zip() 和 enumerate() 的详细说明。

例子

# 演示 zip() 工作的 python 代码

# 初始化列表
questions = ['name', 'colour', 'shape']
answers = ['apple', 'red', 'a circle']

# 使用 zip() 组合两个容器并打印值
for question, answer in zip(questions, answers):
	print('What is your {0}? I am {1}.'.format(question, answer))

输出:

What is your name?  I am apple.
What is your color?  I am red.
What is your shape?  I am a circle.

方式 3:使用 iteritem():   iteritems() 用于遍历字典,顺序打印字典键值对,在 Python 3 版本之前使用。

方式 4:使用 items():  items() 在字典上执行与 iteritems() 类似的任务,但与 iteritems() 相比有一定的缺点。

  • 非常耗时。在大型词典上调用它会消耗大量时间。
  • 它需要大量的内存。有时在字典上调用时会占用双倍的内存。

示例 1:

# 演示 items() 工作的 python 代码

d = {"geeks": "for", "only": "geeks"}

# iteritems() 在 python3 中重命名为 items() 使用 items 打印字典键值对
print("The key value pair using items is : ")
for i, j in d.items():
	print(i, j)

输出:

The key value pair using iteritems is : 
geeks for
only geeks

示例 2:

# 演示 items() 工作的 python 代码

king = {'Akbar': 'The Great', 'Chandragupta': 'The Maurya',
		'Modi': 'The Changer'}

# 使用项目打印字典键值对
for key, value in king.items():
	print(key, value)

输出:

Akbar The Great
Chandragupta The Maurya
Modi The Changer

方式 5:使用 sorted():  sorted() 用于打印容器的排序顺序。它不对容器进行排序, 而只是按 1 个实例的排序顺序打印容器。可以结合使用set() 来删除重复的事件。

示例 1:

# 演示 sorted() 工作的 python 代码

# 初始化列表
lis = [1, 3, 5, 6, 2, 1, 3]

# 使用 sorted() 以排序顺序打印列表
print("The list in sorted order is : ")
for i in sorted(lis):
	print(i, end=" ")

print("\r")

# 使用 sorted() 和 set() 以排序顺序打印列表 使用 set() 删除重复项。
print("The list in sorted order (without duplicates) is : ")
for i in sorted(set(lis)):
	print(i, end=" ")

输出:

The list in sorted order is : 
1 1 2 3 3 5 6 
The list in sorted order (without duplicates) is : 
1 2 3 5 6 

示例 2:

# 演示 sorted() 工作的 python 代码

# 初始化列表
basket = ['guave', 'orange', 'apple', 'pear',
		'guava', 'banana', 'grape']

# 使用 sorted() 和 set() 以排序顺序打印列表
for fruit in sorted(set(basket)):
	print(fruit)

输出:

apple
banana
grape
guava
guave
orange
pear

方式 6:使用 reversed():  reversed() 用于以相反的顺序打印 容器的值。它不反映对原始列表的任何更改

示例 1:

# 演示 reversed() 工作的 python 代码

# 初始化列表
lis = [1, 3, 5, 6, 2, 1, 3]


# 使用 reversed() 以相反的顺序打印列表
print("The list in reversed order is : ")
for i in reversed(lis):
	print(i, end=" ")

输出:

倒序的列表是:
3 1 2 6 5 3 1

示例 2:

# 演示 reversed() 工作的 python 代码

# 使用 reversed() 以相反的顺序打印
for i in reversed(range(1, 10, 3)):
	print(i)

输出:

7 
4 
1
  • 这些技术可以快速使用并减少编码工作。for、while 循环需要改变容器的整个结构。
  • 这些循环技术不需要对容器进行任何结构更改。他们有关键字来表达使用的确切目的。然而,for、while 循环不能做出任何预先预测或猜测,即不容易一眼就理解其目的。
  • 循环技术使代码比使用 for & while 循环更简洁。

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

关注与私信博主(08)学习更多Python知识与技巧,课件,源码,安装包,还有最新大厂面试资料等等等
咱们下期见。

收藏 等于白嫖,点赞才是真情。
 

相关文章:

  • 【历年IJCAI论文下载(含IJCAI2022)】图神经网络(GNN)(多行为推荐、多模态食谱表示学习、同质图表示学习)
  • UNIAPP实战项目笔记3 Swiper部分开发
  • Spring启动源码分析以及生命周期
  • 斜率优化dp
  • 前端开发常用网站整理
  • 直流有刷电机电流采集基于STM32F302R8+X-NUCLEO-IHM07M1
  • 27_GitGitHub
  • 微信公众号在线查题功能系统使用
  • WPS JS宏示例-批量添加链接
  • Java核心——面向对象编程(上)包-继承-多态
  • Ambari自动部署Hadoop集群实战
  • 33.0、C语言——C语言预处理(1) - 翻译环境详解
  • java-php-python-springboot网上订餐系统计算机毕业设计
  • 【VUE项目实战】66、上线-通过node创建Web服务器
  • About 9.25 This Week
  • Bootstrap JS插件Alert源码分析
  • CentOS 7 修改主机名
  • Markdown 语法简单说明
  • MaxCompute访问TableStore(OTS) 数据
  • PAT A1050
  • spring boot下thymeleaf全局静态变量配置
  • Spring核心 Bean的高级装配
  • 代理模式
  • 前端面试之CSS3新特性
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 小而合理的前端理论:rscss和rsjs
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Semaphore
  • 回归生活:清理微信公众号
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​决定德拉瓦州地区版图的关键历史事件
  • # 飞书APP集成平台-数字化落地
  • (20050108)又读《平凡的世界》
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (分类)KNN算法- 参数调优
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (三)终结任务
  • (四)Controller接口控制器详解(三)
  • (一)基于IDEA的JAVA基础10
  • .net CHARTING图表控件下载地址
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .Net中ListT 泛型转成DataTable、DataSet
  • /proc/vmstat 详解
  • @RequestBody与@ModelAttribute
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [android] 天气app布局练习
  • [ASP]青辰网络考试管理系统NES X3.5
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C++]:for循环for(int num : nums)
  • [IE编程] IE中对网页进行截图的编程接口
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [LeetCode]—Anagrams 回文构词法
  • [LeetCode]—Implement strStr() 寻找子串匹配第一个位置 (KMP)
  • [Linux打怪升级之路]-信号的保存和递达