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内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
详解Python 函数如何重载?
Apr 23 Python
Python秒算24点实现及原理详解
Jul 29 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python编写计算器功能
Oct 25 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
Python面向对象编程基础实例分析
Jan 17 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
如何利用Python写个坦克大战
Nov 18 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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 时间计算问题小结
2009/01/04 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python生成特定分布数的实例
2019/12/05 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
Python中的With语句的使用及原理
2020/07/29 Python
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
卫校中专生的自我评价
2014/01/15 职场文书
简单租房协议书
2014/04/09 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
文明寝室申报材料
2014/05/12 职场文书
考试诚信承诺书
2014/05/23 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
总结Python常用的魔法方法
2021/05/25 Python
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL