百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python中的嵌套循环(python中的嵌套循环,来做暴力破解)

off999 2024-10-04 00:40 24 浏览 0 评论

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次。
names = ['Kelly', 'Jessa', 'Emma']
# 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 次迭代,那么它的时间复杂度会更小。

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

相关推荐

SPC相关的计算用excel和python实现【源码下载】

做SPC分析涉及到很多计算,比如CPK、PPK、概率图、PPM等等,网上很多公式,但具体实现却不是那么容易的。我们整理了这些用excel和python实现的代码。包括但不限于以下的内容:SPC分析中的...

Python学不会来打我(34)python函数爬取百度图片_附源码

随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...

django python数据中心、客户、机柜、设备资源管理平台源码分享

先转发后关注,私信“资源”即可免费获取源码下载链接!本项目一个开源的倾向于数据中心运营商而开发的,拥有数据中心、客户、机柜、设备、跳线、物品、测试、文档等一些列模块的资源管理平台,解决各类资源集中管理...

熬夜也值得学习练手的108个Python项目(附源码),太实用了!

现在学编程的人越来越多,Python因为简单好上手、功能又强大,成了很多人的首选。不管是做数据分析、人工智能,还是写网络程序、自动化脚本,Python都能派上用场。而且它诞生的时间比网页还早,作为...

这五个办公室常用自动化工具python源码,复制代码就能用

办公室自动化现在能看这文章的恐怕大部分都是办公室久坐工作者,很多都有腰肌劳损、肩周炎等职业病,难道就不能有个工具缓解一下工作量吗?那么恭喜你点进了这篇文章,这篇文章将使用python直接实现五个常...

将python源代码封装成window可执行程序教程

将python源代码封装成window可执行程序教程点击键盘win+r打开运行框在运行框中输入cmd,进入到命令行。在命令行中输入piplist去查看当前电脑中所有的库检查是否有pyinstall...

Python 爬虫如何爬取网页源码?(爬虫获取网页源代码)

下面教大家用几行代码轻松爬取百度首页源码。什么是urllib?urllib库是Python内置的HTTP请求库,它可以看做是处理URL的组件集合。urllib库包含了四大模块,具体如下:urllib....

Python RPC 之 Thrift(python是做什么的)

thrift-0.12.0python3.4.3Thrift简介:Thrift是一款高性能、开源的RPC框架,产自Facebook后贡献给了Apache,Thrift囊括了整个RP...

用Python编写FPGA以太网MAC(附源码下载方式)

来源:EETOP作者:ccpp123略作了解后发现,MyHDL不是高层次综合,它实际上是用Python的一些功能实现了一个Verilog仿真器,能对用Python写的仿Verilog语言进行仿...

python爬虫常用工具库总结(python爬虫工具下载)

说起爬虫,大家可能第一时间想到的是python,今天就简单为大家介绍下pyhton常用的一些库。请求库:实现基础Http操作urllib:python内置基本库,实现了一系列用于操作url的功能。...

手把手教你使用scrapy框架来爬取北京新发地价格行情(理论篇)

来源:Python爬虫与数据挖掘作者:霖hero大家好!我是霖hero。上个月的时候,我写了一篇关于IP代理的文章,手把手教你使用XPath爬取免费代理IP,今天在这里分享我的第二篇文章,希望大家可以...

2025年Python爬虫学习路线:第1阶段 爬虫基础入门开始

这个阶段的目标是让你熟悉Python的基础知识、了解HTTP请求和HTML是如何工作的,并最终完成你的第一个爬虫小项目——抓取名言!按照计划,我们首先要打好Python基础。Python就像是我们要...

如何入门 Python 爬虫?(python零基础爬虫)

1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...

突破爬虫瓶颈:Python爬虫核心能力提升与案例实操

技术控必看!Python爬虫高手进阶全攻略,解锁数据处理高阶玩法在数字化时代,Python爬虫早已成为数据探索者手中的得力工具。从基础的网页抓取到复杂的数据处理,每一次技术升级都能带来新的突破。本文将...

网络爬虫开源框架(网络爬虫的框架)

目前开源爬虫下载框架是百花齐放,各个编程语言都有,以下主要介绍其中重要的几个:1)python:scrapy,pyspider,gcrawler2)Java:webmagic,WebCollector...

取消回复欢迎 发表评论: