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


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

    它们在哪里使用?

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

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

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

    1. # 演示 enumerate() 工作的 python 代码
    2. for key, value in enumerate(['The', 'Big', 'Bang', 'Theory']):
    3. print(key, value)
    '
    运行

    输出:

    1. 0 The
    2. 1 Big
    3. 2 Bang
    4. 3 Theory
    1. # 演示 enumerate() 工作的 python 代码
    2. for key, value in enumerate(['Geeks', 'for', 'Geeks',
    3. 'is', 'the', 'Best',
    4. 'Coding', 'Platform']):
    5. print(value, end=' ')
    '
    运行

    输出:

    Geeks for Geeks is the Best Coding Platform 
    

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

    例子

    1. # 演示 zip() 工作的 python 代码
    2. # 初始化列表
    3. questions = ['name', 'colour', 'shape']
    4. answers = ['apple', 'red', 'a circle']
    5. # 使用 zip() 组合两个容器并打印值
    6. for question, answer in zip(questions, answers):
    7. print('What is your {0}? I am {1}.'.format(question, answer))
    '
    运行

    输出:

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

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

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

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

    示例 1:

    1. # 演示 items() 工作的 python 代码
    2. d = {"geeks": "for", "only": "geeks"}
    3. # iteritems() 在 python3 中重命名为 items() 使用 items 打印字典键值对
    4. print("The key value pair using items is : ")
    5. for i, j in d.items():
    6. print(i, j)

    输出:

    1. The key value pair using iteritems is :
    2. geeks for
    3. only geeks

    示例 2:

    1. # 演示 items() 工作的 python 代码
    2. king = {'Akbar': 'The Great', 'Chandragupta': 'The Maurya',
    3. 'Modi': 'The Changer'}
    4. # 使用项目打印字典键值对
    5. for key, value in king.items():
    6. print(key, value)

    输出:

    1. Akbar The Great
    2. Chandragupta The Maurya
    3. Modi The Changer

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

    示例 1:

    1. # 演示 sorted() 工作的 python 代码
    2. # 初始化列表
    3. lis = [1, 3, 5, 6, 2, 1, 3]
    4. # 使用 sorted() 以排序顺序打印列表
    5. print("The list in sorted order is : ")
    6. for i in sorted(lis):
    7. print(i, end=" ")
    8. print("\r")
    9. # 使用 sorted() 和 set() 以排序顺序打印列表 使用 set() 删除重复项。
    10. print("The list in sorted order (without duplicates) is : ")
    11. for i in sorted(set(lis)):
    12. print(i, end=" ")

    输出:

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

    示例 2:

    1. # 演示 sorted() 工作的 python 代码
    2. # 初始化列表
    3. basket = ['guave', 'orange', 'apple', 'pear',
    4. 'guava', 'banana', 'grape']
    5. # 使用 sorted() 和 set() 以排序顺序打印列表
    6. for fruit in sorted(set(basket)):
    7. print(fruit)
    '
    运行

    输出:

    1. apple
    2. banana
    3. grape
    4. guava
    5. guave
    6. orange
    7. pear

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

    示例 1:

    1. # 演示 reversed() 工作的 python 代码
    2. # 初始化列表
    3. lis = [1, 3, 5, 6, 2, 1, 3]
    4. # 使用 reversed() 以相反的顺序打印列表
    5. print("The list in reversed order is : ")
    6. for i in reversed(lis):
    7. print(i, end=" ")

    输出:

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

    示例 2:

    1. # 演示 reversed() 工作的 python 代码
    2. # 使用 reversed() 以相反的顺序打印
    3. for i in reversed(range(1, 10, 3)):
    4. print(i)

    输出:

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

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

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

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

  • 相关阅读:
    Linux 入门篇
    C# 语言在AGI 赛道上能做什么
    企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4
    4.存储NFS
    【ROS2要素】xml、GDF、URDF的关系
    教你用Elastic Search:运行第一条Hello World搜索命令
    什么是分布式软件系统
    基于Hutool,文件导入读取,批量转换bean并且自定义校验
    yml文件中&、<<、 * 是什么意思
    uniapp 在android手机上运行tab栏页面跳转问题
  • 原文地址:https://blog.csdn.net/m0_73720982/article/details/127037263