Python中的嵌套循环详情

目录
  • 1 什么是嵌套循环
  • 2 Python 嵌套 for 循环
    • 2.1 嵌套循环打印图案
    • 2.2 在 for 循环中的while循环
    • 2.3 实践:打印一个带有 5 行 3 列星形的矩形图案
  • 3 打破嵌套循环
  • 4 继续嵌套循环
  • 5 使用列表理解的单行嵌套循环
  • 6 Python中的嵌套while循环
    • 6.1 While 循环内的 for 循环
  • 7 何时在 Python 中使用嵌套循环?

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()

输出:

  • 在这个程序中,外部 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 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()

输出:

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

打印以下星形矩形:

# 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)

输出:

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)

输出:

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

输出:

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

输出:

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嵌套循环内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python用列表生成式写嵌套循环的方法

    将两个嵌套for循环写成一个列表生成式 如,有一个嵌套列表,a=[[1,2],[3,4],[5,6]],要提取列表里的每一个元素 用for循环处理: for i in a: for j in i: print(j) 用列表生成式: b=[j for i in a for j in i]#注意两个for的顺序 print(b) b=[1, 2, 3, 4, 5, 6] 以上这篇python用列表生成式写嵌套循环的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python使用for...else跳出双层嵌套循环的方法实例

    背景 周末在写一个爬虫时,遇到这样一种场景:从搜索结果中下载指定数量的文件 例如:搜索结果中共分为10页展示,加起来一共50条数据,现在要做的是从50条数据中下载指定数量的数据 为了实现这个功能,开始我是这样想的: 1.依次遍历10页数据,并且把每页的数据都追加到同一个列表中,这样的话,请求完10页数据后,这个列表中就包含了所有结果: 2.然后再从这个大列表中提取指定数量的数据进行下载即可 这种方法确实可行,但是在运行过程中发现一个问题:程序运行速度太慢了,原因是无论你想下载多少条数据,都会先把

  • Python基础教程之循环语句(for、while和嵌套循环)

    循环可以用来重复执行某条语句,直到某个条件得到满足或遍历所有元素. 1 for循环 是for循环,可以把集合数据类型list.tuple.dict.set的元素遍历出来. (1)对list进行循环 city_list = ['广州','深圳','东莞','佛山'] city_list = ['广州','深圳','东莞','佛山'] for city in city_list: print("当前地市为:{0}".format(city)) 当前地市为:广州 当前地市为:深圳 当前地市为

  • Python中的嵌套循环详情

    目录 1 什么是嵌套循环 2 Python 嵌套 for 循环 2.1 嵌套循环打印图案 2.2 在 for 循环中的while循环 2.3 实践:打印一个带有 5 行 3 列星形的矩形图案 3 打破嵌套循环 4 继续嵌套循环 5 使用列表理解的单行嵌套循环 6 Python中的嵌套while循环 6.1 While 循环内的 for 循环 7 何时在 Python 中使用嵌套循环? 1 什么是嵌套循环 所谓嵌套循环就是一个外循环的主体部分是一个内循环.内循环或外循环可以是任何类型,例如 whi

  • Python 中 Shutil 模块详情

    一.什么是shutil shutil可以简单地理解为sh + util ,shell工具的意思.shutil模块是对os模块的补充,主要针对文件的拷贝.删除.移动.压缩和解压操作. 二.shutil模块的主要方法 1. shutil.copyfileobj(fsrc, fdst[, length=16*1024]) copy文件内容到另一个文件,可以copy指定大小的内容.这个方法是shutil模块中其它拷贝方法的基础,其它方法在本质上都是调用这个方法. 让我们看一下它的源码: def copy

  • python中__init__()方法详情

    目录 python类中定义的函数称为方法, init ()方法本质也是一个函数.这个函数的作用是初始化实例后的对象. 具体如下例: init()方法的作用是初始化实例后的对象cqueue. class CQueue: 类中的函数称为方法 ,这里的__init__()方法在类实例化是被自动调用.若类定义了__init__()方法,类的实例化操作会自动调用__init__方法. __init__方法可以有参数,参数通过__init__()传递到类的实例化操作上.self代表的是类的实例,而非类. 类

  • python中apply函数详情

    函数原型: DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds) 1.该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针. 2.这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数 会自动

  • Python 中面向接口编程详情

    目录 前言 概述 Python 接口 非正式接口 前言 接口在软件工程扮演重要角色,随着应用程序的功能不断扩展,代码库的更新和改变也难以管理.在许多情况下,会发现有一些看起来非常相似,但却不相关的类,这可能会导致一些难于维护.在本次分享中,将看到你如何使用 Python 接口来帮助确定. 主要从下面几个方面了解内容: 了解接口的工作原理和创建 Python 接口的注意事项 理解接口在像 Python 这样的动态语言中重要性 实现一个非正式的 Python 接口 使用 abc.ABCMeta 和 

  • 关于Python中的if __name__ == ‘__main__’详情

    目录 1.程序入口 2.__name__是什么? 场景1:直接运行脚本 场景2:从其他脚本导入 3.__name__可以显示包路径 5.测试模块里函数 关于在学习Python的过程中,遇到的这类似的代码: if __name__ == "__main__":     print("Hello World!") 1.程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入

  • Python中的for循环详情

    目录 1.可迭代对象 1.1什么是可迭代对象 1.2怎么判断 2.字符串的for循环 3.列表的for循环 4.元组的for循环 5.字典的for循环 5.1keys() 5.2 values() 5.3 items() 6.range函数的for循环 6.1基础案例 6.2找出100以内能够被5整除的数 6.3高斯求和 7.多个for语句 8.列表推导式 9.for-else 10.实现三角阵列 11.99乘法表 for语句实际上解决的是循环问题.在很多的高级语言中都有for循环(for lo

  • Python 中 Elias Delta 编码详情

    目录 1.分步实施 第1步: 第2步: 第3步: 第4步: 语法: Elias Delta Encoding(X)= Elias Gamma encoding (1+floor(log2(X)) + Binary representation of X without MSB. 1.分步实施 首先,在为 Elias Delta 编码编写代码之前,我们将实现 Elias delta 编码. 第1步: 从数学库导入 log.floor 函数以执行对数运算. 从用户获取输入 k 以在 Elias Ga

  • Python中defaultdict与dict的差异详情

    目录 一.问题描述 二.解决方案 三.结语 本文转自微信公众号:"算法与编程之美", 一.问题描述 在collections模块中的defauldict使用时与dict有何不同,为何我们用dict中的key值不存在时会报错,而defaudict不会报错,下面做出解答. 二.解决方案 以解决遇到的问题用来解答. 代码示例: import collections //引用collections模块 dic=collections.defaultdict(int) //利用模块中的defau

  • Python中print()函数的用法详情

    Python中print()函数的方法是打印指定的内容.在交互环境中输入“help(print)”指令,可以显示print()函数的使用方法, 如图1所示: 图1 print()函数的使用方法 1 常用方法 1.1 打印单个内容 从图1中可以看出,print()函数的第一个参数是value,即要打印的内容.通过print()打印单个内容的方法 如图2所示: 图2 打印单个内容 1.2 打印多个内容 从图1中可以看出,print()函数的第二个参数是...,表示print()函数要打印的多个参数,

随机推荐