1 什么是嵌套循环

所谓嵌套循环就是一个外循环的主体部分是一个内循环。内循环或外循环可以是任何类型,例如 while 循环或 for 循环。 例如,外部 for 循环可以包含一个 while 循环,反之亦然。外循环可以包含多个内循环。 循环链没有限制。

在嵌套循环中,迭代次数将等于外循环中的迭代次数乘以内循环中的迭代次数。在外循环的每次迭代中,内循环执行其所有迭代。 对于外循环的每次迭代,内循环重新开始并在外循环可以继续下一次迭代之前完成其执行。嵌套循环通常用于处理多维数据结构,例如打印二维数组、迭代包含嵌套列表的列表。嵌套循环是控制流语句的一部分,可帮助您了解 Python 的基础知识。

2 Python 嵌套 for 循环

在 Python 中,for 循环用于迭代序列,例如列表、字符串、元组,以及其他可迭代对象,例如范围。在 Python 中使用嵌套 for 循环的语法:

# outer for loop
for element in sequence # inner for loopfor element in sequence:body of inner for loopbody of outer for loop

在此示例中,我们在 for 循环中使用了 for 循环。 在本例中,我们打印前十个数字的乘法表。

  • 外部 for 循环使用 range() 函数迭代前十个数字。
  • 对于每个外部数字,内部 for 循环将执行十次。
  • 在内循环的主体中,我们将打印外部数字和当前数的乘积。
  • 内循环只不过是外循环的主体。

示例:编写一个嵌套的 for 循环程序以在 Python 中打印乘法表。

# outer loop
for i in range(1, 11):# nested loop# to iterate from 1 to 10for j in range(1, 11):# print multiplicationprint(i * j, end=' ')print()

输出:

  • 在这个程序中,外部 for 循环是从 1 到 10 迭代数字。 range() 返回 10 个数字。 所以外循环的总迭代次数是 10。
  • 在嵌套循环的第一次迭代中,数字是 1。在下一次,它是 2。依此类推,直到 10。
  • 接下来,对于外循环的每次迭代,内循环将执行十次。 内部循环也将执行 10 次,因为我们打印的乘法表最多为 10。
  • 在内部循环的每次迭代中,我们计算了两个数字的乘法。

2.1 嵌套循环打印图案

嵌套循环的另一个最常见用途是打印各种星形和数字模式。让我们看看如何使用嵌套循环在 Python 中打印以下模式。

rows = 5
# outer loop
for i in range(1, rows + 1):# inner loopfor j in range(1, i + 1):print("*", end=" ")print('')
  • 在这个程序中,外循环是打印的行数。
  • 行数是五,所以外循环会执行五次。
  • 接下来,内部循环是每行中的总列数。
  • 对于外部循环的每次迭代,列计数都会增加 1。
  • 在外循环的第一次迭代中,列数为 1,下一次为 2。依此类推。
  • 内部循环迭代等于列数。
  • 在内部循环的每次迭代中,我们打印 star。

2.2 在 for 循环中的while循环

在一种循环中使用另一种类型的循环非常常见且很有帮助。 我们可以在 for 循环中放置一个 while 循环。假设我们想将列表中的每个名称重复五次:

  • 在这里,我们将使用外部 for 循环迭代列表。
  • 外层for循环每次迭代,内层for循环执行5次,打印当前名称5次。
names = ['Kelly', 'Jessa', 'Emma']
# outer loop
for name in names:# inner while loopcount = 0while count < 5:print(name, end=' ')# print(name)# increment countercount = count + 1print()

输出:

2.3 实践:打印一个带有 5 行 3 列星形的矩形图案

打印以下星形矩形:

# 5 rows
for name in range(5):# 3 columnfor j in range(3):print('*', end='')print()

3 打破嵌套循环

break 语句用于循环内部退出循环。 如果在嵌套循环内使用 break 语句(在另一个循环内循环),它将终止最内层循环。

在下面的示例中,我们有两个循环。 外部 for 循环使用 range() 函数迭代前四个数字,内部 for 循环也迭代前四个数字。 如果外部编号和内部循环的当前编号相同,则中断内部(嵌套)循环。

for i in range(4):for j in range(4):if j == i:breakprint(i, j)

输出:

4 继续嵌套循环

continue 语句跳过当前迭代并移动到下一个迭代。 在 Python 中,当循环内遇到 continue 语句时,它会跳过它下面的所有语句并立即跳转到下一次迭代。

在下面的示例中,我们有两个循环。 外部 for 循环迭代第一个列表,内部循环也迭代第二个数字列表。如果外部编号和内部循环的当前编号相同,则移动到内部循环的下一次迭代。

first = [2, 4, 6]
second = [2, 4, 6]
for i in first:for j in second:if i == j:continueprint(i, '*', j, '= ', i * j)

输出:

5 使用列表理解的单行嵌套循环

例如,如果您有两个列表并想要获取它们的所有组合,为了实现这一点,您需要使用两个嵌套循环,如下所述。

first = [2, 3, 4]
second = [20, 30, 40]
final = []
for i in first:for j in second:final.append(i+j)
print(final)

您可以使用列表压缩和嵌套循环编写更快速、更紧凑的代码,如下所示。

first = [2, 3, 4]
second = [20, 30, 40]
final = [i+j for i in first for j in second]
print(final)

输出:

代码编写思路:

  • 首先,编写一个外部 for 循环,它将迭代第一个列表,如 [for i in first]。
  • 接下来,编写一个内部循环,它将在外部循环之后迭代第二个列表,例如 [for i in first for j in second]。
  • 最后,计算外数和内数之和,如 [i+j for i in first for j in second]。
  • 最后,将结果存储在一个新列表中,例如 final = [i+j for i in first for j in second]。

下面让我们看看其他的例子:

在这个例子中,我们将在列表中使用两个 for 循环,最终结果将是一个列表列表。 我们不会在每个列表中包含相同的数字。 我们将使用 if 条件过滤它们。

final = [[x, y] for x in [10, 20, 30] for y in [30, 10, 50] if x != y]
print(final)

输出:

6 Python中的嵌套while循环

在 Python 中,while 循环语句在特定条件为真时重复执行代码块。 当数字迭代不固定时,我们使用 while 循环。在本节中,我们将了解如何在另一个 while 循环中使用 while 循环。在 Python 中编写嵌套的 while 循环语句的语法如下:

while expression:while expression:statement(s)statement(s)

在下面例子中,我们将在每行打印前 10 个数字 5 次。

i = 1
while i <= 5:j = 1while j <= 10:print(j, end='')j = j + 1i = i + 1print()

输出:

6.1 While 循环内的 for 循环

有时在另一种循环中使用一种循环会很有帮助。 我们可以在while循环里面放一个for循环。假设我们想要打印从 1 到 100 的所有完美数字。

  • 在这里,我们将使用 while 循环迭代前 100 个数字。
  • 在外部while循环的每次迭代中,内部for循环从1到当前外部数字执行,以检查当前数字是否为完美数字。(完美数字是一个数学概念,感兴趣的读者可再深入查询)
print('Show Perfect number fom 1 to 100')
n = 2
# outer while loop
while n <= 100:x_sum = 0# inner for loopfor i in range(1, n):if n % i == 0:x_sum += iif x_sum == n:print('Perfect number:', n)n += 1

输出:

7 何时在 Python 中使用嵌套循环?

  • 当您有需要通过相同函数循环的嵌套数组或列表时,嵌套循环很方便。
  • 当您想使用行和列打印不同的星形和数字模式时。

记住时间复杂度。 让我们通过 Python 中嵌套 for 循环如何工作的示例来理解这一点。我们使用 for 循环迭代序列或可迭代的给定元素。 就像我在列表中一样。 这里的时间复杂度是 O(n),因为我们正在迭代列表中的所有项目。执行步骤(迭代)的数量决定了循环的时间复杂度。当您使用嵌套循环并且外部和内部循环都在没有任何 if 条件的情况下运行时,时间复杂度为 O(n^2),因为对于所有 n 个元素,代码都会执行 n 次。

numbers = [[1, 2, 3], [4, 5, 6]]cnt = 0
for i in numbers:for j in i:print('iteration', cnt, end=': ')print(j)cnt = cnt + 1

输出:

如果您在内部循环中给出一个条件,该条件将在某些元素之后停止执行,并且不执行内部循环或外部循环的所有 n 次迭代,那么它的时间复杂度会更小。

当您没有更好的选择时使用嵌套循环,请记住编写高效且紧凑的代码远胜于编写复杂的代码。

学习和资料获取可以点击扫码领取哦~

Python中的嵌套循环相关推荐

  1. python中while嵌套循环_python中的while循环

    循环 目标 程序的三大流程  while 循环基本使用  break 和 continue  while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺 ...

  2. python嵌套循环优化_如何在python中优化嵌套循环?

    我要处理邮件分组字典中的所有条目以及所有剩余条目.但是,由于我要用two-for循环重复一些计算,所以需要花费很多时间来处理.但是,一旦我是python新手,我就找不到一个简单的方法来避免这些重复.基 ...

  3. 详解Python中的循环的几个类型

    什么是循环?在编程中,循环意味着以相同的顺序多次重复同一组计算. 什么是循环 在编程中,循环意味着以相同的顺序多次重复同一组计算. 想想现实生活中的情况.你是一位在森林里测量树木的野外生物学家.你选一 ...

  4. python中break、continue 、exit() 、pass终止循环的区别

    python中break.continue .exit() .pass区分 1.break:跳出循环,不再执行 Python break语句,就像在C语言中,打破了最小封闭for或while循环. b ...

  5. Python中的条件选择和循环语句

    Python中的条件选择和循环语句 同C语言.Java一样,Python中也存在条件选择和循环语句,其风格和C语言.java的很类似,但是在写法和用法上还是有一些区别.今天就让我们一起来了解一下. 一 ...

  6. Python中隐藏了你不知道的10个彩蛋

    Python中隐藏了你不知道的10个彩蛋 本博客转载自:http://www.techug.com/post/10-tips-of-python-programming.html?utm_source ...

  7. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  8. USF MSDS501 计算数据科学中文讲义 2.4 Python 中的编程模式

    来源:ApacheCN『USF MSDS501 计算数据科学中文讲义』翻译项目 原文:Programming Patterns in Python 译者:飞龙 协议:CC BY-NC-SA 4.0 现 ...

  9. python中4j_GitHub - Byron4j/PythonVeterans: Python新手到老鸟的历程;基于Python 3.6

    Python学习目标 基础语法 面向对象编程 模块化编程 游戏编程 计算 量化交易 网络爬虫 基础语法一览 不需要明确的声明类型来保留内存空间:name = "Maxsu" 允许同 ...

  10. python中break语句的用法_Python break语句用法示例

    本文概述 break是python中的关键字, 用于将程序控制带出循环. break语句逐个中断循环, 即在嵌套循环的情况下, 它首先中断内部循环, 然后继续进行外部循环.换句话说, 我们可以说使用b ...

最新文章

  1. minitab怎么算西格玛水平_六西格玛黑带培训内容
  2. pfSense2.32端口转发设置
  3. 用平方映射理解tanh
  4. keil5安装_keil5,软件安装包及安装教程
  5. 岗位理解_当面试官问求职者对应聘岗位的理解情况
  6. Volley网络请求框架简析——Android网络请求框架(三)
  7. ipv6网络使用scp,并解决No route to host与no matches found报错
  8. 山大往年自招计算机系试题,2018山大自招经验分享
  9. 【组件】大数据框架安装功能来划分
  10. bootstrap ace admin 整合java HTML5
  11. LeetCode 744. Find Smallest Letter Greater Than Target
  12. Hr人力资源管理系统怎样给企业创造价值
  13. 《编码:隐匿在计算机软硬件背后的语言》TXT
  14. 安装并使用 Wowza 发布你的 RTMP 直播流
  15. 基于PIC单片机USB接口的数据采集系统设计
  16. 由浅入深玩转华为WLAN—25 高可用性系列(1)双击热备概述
  17. AI常用框架和工具丨1. 科学计算库NumPy
  18. vue 超出三行隐藏_文字超出三行省略...显示全文
  19. 开源项目贡献者_如何管理开源项目的临时贡献者
  20. (转)查看USB设备

热门文章

  1. unity动画之帧动画使用
  2. 我的2014--菜鸟慢慢在长大
  3. 地球和太阳的位置关系3D演示:自转、公转、地心坐标系、日心坐标系
  4. matlab指数e是如何表示,Matlab中表达e怎么操作?表达e方法详解
  5. RocketMQ 实战与原理解析
  6. 计算机论文指数,我国计算机领域学术论文引用中的马太效应——以《计算机学报》和《计算机研究与发展》为例...
  7. X509 PKCS7 PKCS12
  8. java 熄灯问题_C++基础算法学习——熄灯问题
  9. RPS基准点系统 2020
  10. php的rps,SMP irq affinity与RPS/RFS的调优纪实