Python中的嵌套循环详情


Posted in Python onMarch 23, 2022

1 什么是嵌套循环

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

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

2 Python 嵌套 for 循环

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

# outer for loop
for element in sequence
# inner for loop
for element in sequence:
body of inner for loop
body 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 10
for j in range(1, 11):
# print multiplication
print(i * j, end=' ')
print()

输出:

Python中的嵌套循环详情

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

2.1 嵌套循环打印图案

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

Python中的嵌套循环详情

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

2.2 在 for 循环中的while循环

在一种循环中使用另一种类型的循环非常常见且很有帮助。 我们可以在 for 循环中放置一个 while 循环。

假设我们想将列表中的每个名称重复五次:

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

输出:

Python中的嵌套循环详情

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

打印以下星形矩形:

Python中的嵌套循环详情

 
# 5 rows
for name in range(5):
# 3 column
for 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:
break
print(i, j)

输出:

Python中的嵌套循环详情

4 继续嵌套循环

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

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

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

输出:

Python中的嵌套循环详情

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)

输出:

Python中的嵌套循环详情

代码编写思路:

  • 首先,编写一个外部 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)

输出:

Python中的嵌套循环详情

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 = 1
while j <= 10:
print(j, end='')
j = j + 1
i = i + 1
print()

输出:

Python中的嵌套循环详情

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 loop
for i in range(1, n):
if n % i == 0:
x_sum += i
if x_sum == n:
print('Perfect number:', n)
n += 1

输出:

Python中的嵌套循环详情

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

输出:

Python中的嵌套循环详情

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

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

到此这篇关于Python中的嵌套循环详情的文章就介绍到这了,更多相关Python嵌套循环内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
Python中你应该知道的一些内置函数
Mar 31 Python
Python编程之Re模块下的函数介绍
Oct 28 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
python判断输入日期为第几天的实例
Nov 13 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python对常见数据类型的遍历解析
Aug 27 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 Python
Python学习之包与模块详解
Mar 19 Python
python装饰器代码解析
Mar 23 #Python
基于Python实现将列表数据生成折线图
Python必备技巧之字符数据操作详解
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 #Python
Python借助with语句实现代码段只执行有限次
Mar 23 #Python
python3 字符串str和bytes相互转换
Mar 23 #Python
对象析构函数__del__在Python中何时使用
You might like
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
php组合排序简单实现方法
2016/10/15 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
python中执行shell命令的几个方法小结
2014/09/18 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python实战之制作天气查询软件
2019/05/14 Python
python中的itertools的使用详解
2020/01/13 Python
flask开启多线程的具体方法
2020/08/02 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
财务出纳员岗位职责
2013/11/26 职场文书
公司道歉信范文
2014/01/09 职场文书
会计系毕业生求职信
2014/05/28 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
小学教师自我评价
2015/03/04 职场文书
道歉情书大全
2015/05/12 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
MySQL Server 层四个日志
2022/03/31 MySQL
什么是Python装饰器?如何定义和使用?
2022/04/11 Python