Python中的嵌套循环
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中的嵌套循环相关推荐
- python中while嵌套循环_python中的while循环
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺 ...
- python嵌套循环优化_如何在python中优化嵌套循环?
我要处理邮件分组字典中的所有条目以及所有剩余条目.但是,由于我要用two-for循环重复一些计算,所以需要花费很多时间来处理.但是,一旦我是python新手,我就找不到一个简单的方法来避免这些重复.基 ...
- 详解Python中的循环的几个类型
什么是循环?在编程中,循环意味着以相同的顺序多次重复同一组计算. 什么是循环 在编程中,循环意味着以相同的顺序多次重复同一组计算. 想想现实生活中的情况.你是一位在森林里测量树木的野外生物学家.你选一 ...
- python中break、continue 、exit() 、pass终止循环的区别
python中break.continue .exit() .pass区分 1.break:跳出循环,不再执行 Python break语句,就像在C语言中,打破了最小封闭for或while循环. b ...
- Python中的条件选择和循环语句
Python中的条件选择和循环语句 同C语言.Java一样,Python中也存在条件选择和循环语句,其风格和C语言.java的很类似,但是在写法和用法上还是有一些区别.今天就让我们一起来了解一下. 一 ...
- Python中隐藏了你不知道的10个彩蛋
Python中隐藏了你不知道的10个彩蛋 本博客转载自:http://www.techug.com/post/10-tips-of-python-programming.html?utm_source ...
- python中len用法_简单介绍Python中的len()函数的使用
简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...
- USF MSDS501 计算数据科学中文讲义 2.4 Python 中的编程模式
来源:ApacheCN『USF MSDS501 计算数据科学中文讲义』翻译项目 原文:Programming Patterns in Python 译者:飞龙 协议:CC BY-NC-SA 4.0 现 ...
- python中4j_GitHub - Byron4j/PythonVeterans: Python新手到老鸟的历程;基于Python 3.6
Python学习目标 基础语法 面向对象编程 模块化编程 游戏编程 计算 量化交易 网络爬虫 基础语法一览 不需要明确的声明类型来保留内存空间:name = "Maxsu" 允许同 ...
- python中break语句的用法_Python break语句用法示例
本文概述 break是python中的关键字, 用于将程序控制带出循环. break语句逐个中断循环, 即在嵌套循环的情况下, 它首先中断内部循环, 然后继续进行外部循环.换句话说, 我们可以说使用b ...
最新文章
- minitab怎么算西格玛水平_六西格玛黑带培训内容
- pfSense2.32端口转发设置
- 用平方映射理解tanh
- keil5安装_keil5,软件安装包及安装教程
- 岗位理解_当面试官问求职者对应聘岗位的理解情况
- Volley网络请求框架简析——Android网络请求框架(三)
- ipv6网络使用scp,并解决No route to host与no matches found报错
- 山大往年自招计算机系试题,2018山大自招经验分享
- 【组件】大数据框架安装功能来划分
- bootstrap ace admin 整合java HTML5
- LeetCode 744. Find Smallest Letter Greater Than Target
- Hr人力资源管理系统怎样给企业创造价值
- 《编码:隐匿在计算机软硬件背后的语言》TXT
- 安装并使用 Wowza 发布你的 RTMP 直播流
- 基于PIC单片机USB接口的数据采集系统设计
- 由浅入深玩转华为WLAN—25 高可用性系列(1)双击热备概述
- AI常用框架和工具丨1. 科学计算库NumPy
- vue 超出三行隐藏_文字超出三行省略...显示全文
- 开源项目贡献者_如何管理开源项目的临时贡献者
- (转)查看USB设备
热门文章
- unity动画之帧动画使用
- 我的2014--菜鸟慢慢在长大
- 地球和太阳的位置关系3D演示:自转、公转、地心坐标系、日心坐标系
- matlab指数e是如何表示,Matlab中表达e怎么操作?表达e方法详解
- RocketMQ 实战与原理解析
- 计算机论文指数,我国计算机领域学术论文引用中的马太效应——以《计算机学报》和《计算机研究与发展》为例...
- X509 PKCS7 PKCS12
- java 熄灯问题_C++基础算法学习——熄灯问题
- RPS基准点系统 2020
- php的rps,SMP irq affinity与RPS/RFS的调优纪实