《python数据分析及其在水利工程中的应用》课件-13九曲连环 - 嵌套循环与列表推导式_第1页
《python数据分析及其在水利工程中的应用》课件-13九曲连环 - 嵌套循环与列表推导式_第2页
《python数据分析及其在水利工程中的应用》课件-13九曲连环 - 嵌套循环与列表推导式_第3页
《python数据分析及其在水利工程中的应用》课件-13九曲连环 - 嵌套循环与列表推导式_第4页
《python数据分析及其在水利工程中的应用》课件-13九曲连环 - 嵌套循环与列表推导式_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

索引⼭河之术九曲连环-嵌套循环与列表推导式Nine-bendChain-NestedLoopandlistderivationformula疏导之术-升级任务最终篇TheArtofGuidance-Theultimateupgrademission今⽇是⻓⽼的指引—智水长老“疏导之术”治⽔之道,在于因势利导。遇岔路需判断(条件),遇重复需疏通(循环)。

掌握此术,⽅能控制数据流向。当你掌握了循环中再循环的奥妙,以及⽤—⾏代码创建列表的最后—环【导流师】!九曲连环之法。的精妙,⽅可称为真正的升级任务进度TheprogressoftheUpgradetask任务:岔路抉择-条件语句任务:⽔滴⽯穿-while循环任务:遍历江河-for循环与range已完成任务已完成任务:九曲连环-嵌套循环与列表推导式当前任务进行中>>>完成本任务,成为【导流师】!任务目标本次任务:九曲连环-嵌套循环与列表推导式LessonTask:IndexingMountainsandRivers-DetailedExplanationoftheDictionary理解嵌套循环的概念与执⾏流程掌握嵌套循环在⼆维数据中的应⽤学习列表推导式的基本语法掌握带条件的列表推导式理解嵌套列表推导式能够合理应⽤嵌套循环与列表推导式解决实际问题任务目标本次任务:九曲连环-嵌套循环与列表推导式LessonTask:IndexingMountainsandRivers-DetailedExplanationoftheDictionary理解嵌套循环的概念与执⾏流程掌握嵌套循环在⼆维数据中的应⽤学习列表推导式的基本语法掌握带条件的列表推导式理解嵌套列表推导式

能够合理应⽤嵌套循环与列表推导式解决实际问题01第一节嵌套循环:循环中的循环Nestedloop:Aloopwithinaloop嵌套循环的概念Theconceptofnestedloops什么是嵌套循环?嵌套循环是指—个循环结构内部完整地包含另—个循环结构。好⽐整理—个有多个抽屉的柜⼦:外层循环:遍历每—个抽屉内层循环:在当前打开的抽屉⾥

,检查每—件物品嵌套循环的概念Theconceptofnestedloopsfor

外层变量

in

外层序列

:#外层循环的操作for

内层变量in

内层序列

:#

内层循环的操作嵌套循环的基本结构嵌套循环的概念Theconceptofnestedloops嵌套循环的基本结构for

外层变量

in

外层序列

:#外层循环的操作for

内层变量in

内层序列

:#

内层循环的操作嵌套循环的概念Theconceptofnestedloopswhile外层条件:

#外层循环的操作

while内层条件:

#内层循环的操作嵌套循环的基本结构for

外层变量

in

外层序列

:#外层循环的操作while

条件:#

内层循环的操作嵌套循环的概念Theconceptofnestedloops开始外层循环第一次迭代内层循环完整执⾏外层循环下—次迭代外层循环是否结束?结束否嵌套循环的执行逻辑嵌套循环的执⾏流程Theexecutionprocessofnestedloops执⾏流程核心特点外层循环每执⾏—次,

内层循环会完整地执⾏其所有迭代。内层循环对于外层循环的每—次迭代都会重新执⾏—遍。嵌套循环的执⾏流程Theexecutionprocessofnestedloops#外层循环控制⾏for

i

in

range(3):#

内层循环控制列forj

in

range(2):

#

j

将会是

0,

1print(f"外层迭代i=

{i},

内层迭代j

=

{j}")简单示例嵌套循环的执⾏流程Theexecutionprocessofnestedloops#外层循环控制⾏for

i

in

range(3):#

内层循环控制列forj

in

range(2):

#

j

将会是

0,

1print(f"外层迭代i=

{i},

内层迭代j

=

{j}")简单示例#

i将会是0,

1,

2嵌套循环的执⾏流程Theexecutionprocessofnestedloops#外层循环控制⾏for

i

in

range(3):#

i将会是0,

1,

2#

内层循环控制列forj

in

range(2):

#

j

将会是

0,

1print(f"外层迭代i=

{i},

内层迭代j

=

{j}")简单示例外层迭代i

=

0,

内层迭代

j

=

0外层迭代i

=

0,

内层迭代

j

=

1外层迭代i

=

1,

内层迭代

j

=

0外层迭代i

=

1,

内层迭代

j

=

1外层迭代i

=

2,

内层迭代

j

=

0外层迭代i

=

2,

内层迭代

j

=

1输出结果嵌套循环的应⽤场景Theapplicationscenariosofnestedloops示例嵌套循环最常见的应⽤是处理⼆维数据,如矩阵或表格。处理⼆维数据结构嵌套循环的应⽤场景Theapplicationscenariosofnestedloopsmatrix

=

[[1,

2,

3],[4,

5,

6],[7,

8,

9]]示例嵌套循环最常见的应⽤是处理⼆维数据,如矩阵或表格。处理⼆维数据结构for

row

in

matrix:

#

外层循环遍历每—⾏

for

item

in

row:#

内层循环遍历⾏中每个元素print(item,end="

")print()#每⾏结束后换⾏嵌套循环的应⽤场景Theapplicationscenariosofnestedloops示例嵌套循环最常见的应⽤是处理⼆维数据,如矩阵或表格。123456789输出结果处理⼆维数据结构matrix

=

[[1,

2,

3],[4,

5,

6],[7,

8,

9]]for

row

in

matrix:

#

外层循环遍历每—⾏

for

item

in

row:#

内层循环遍历⾏中每个元素print(item,end="

")print()#每⾏结束后换⾏嵌套循环的应⽤场景Theapplicationscenariosofnestedloops其他应⽤场景#⽣成⽹格坐标for

x

in

range(3):for

y

in

range(3):print(f"坐标

:

({x},{y})")⽣成坐标对#九九乘法表foriinrange(1,10):forjinrange(1,i+1):print(f"{j}×{i}={i*j}",end="")print()#换⾏打印九九乘法表嵌套循环的注意事项Precautionsfornestedloops

可读性过多的嵌套(通常超过三层)会使代码难以理解和维护。当嵌套太深时,考虑将部分逻辑提取到函数中,或使⽤其他技术如列表推导式。性能考虑嵌套循环的执⾏次数是内外层循环次数的乘积。层数过多或单层循环次数过⼤,可能导致程序运⾏缓慢。

break和continue这些语句只影响其所在的最内层循环。循环变量确保内外层循环使⽤不同的变量名,避免混淆。常⽤的内外层循环变量名:i和j、x和y、outer和inner等。02第二节列表推导式:优雅创建列表Listderivation:Createlistsgracefully什么是列表推导式Whatisalistderivation概念定义列表推导式是—种更简洁、更具可读性的创建列表的⽅法。通常⽤于根据一个已存在的可迭代对象(如列表、元组、字符串、range)来创建新的列表。对⽐传统⽅法squares

=

[]for

x

in

range(1,

6):squares.append(x**2)#squares

结果

:

[1,

4,

9,

16,

25]传统⽅法创建平⽅数列表squares=

[x**2

forx

in

range(1,

6)]#squares

结果

:

[1,

4,

9,

16,

25]使⽤列表推导式列表推导式的基本语法Thebasicsyntaxoflistderivations基本形式与注释1expression:对item进⾏处理的表达式,其结果将成为新列表的元素。[expression

for

item

in

iterable]2item:从iterable中取出的每个元素。3iterable:任何可迭代的对象,如列表、

字符串、range()等。列表推导式:基本示例Listderivation:Basicexampletext=

"Python"uppercase_chars=

[char.upper()for

char

in

text]#uppercase_chars结果

:

['P',

'Y',

'T',

'H',

'O',

'N']将字符串中的每个字符转为⼤写:列表推导式:添加条件Listderivation:Addconditions带条件的列表推导式[expression

for

item

in

iterable

if

condition]condition:—个布尔表达式,

只有当其为True时,expression才会被计算并加⼊新列表。条件筛选放在for循环后⾯,⽤于过滤元素列表推导式:条件筛选示例Listderivation:Anexampleofconditionalfilteringdams

=

{"三峡⼤坝":

185,"葛洲坝":

70,"⼩浪底":

154,"丹江⼝

":

97}tall_dams=

[name

for

name,

height

in

dams.items()

if

height

>

100]#tall_dams结果

:

['三峡⼤坝',

'⼩浪底']筛选⾼度超过100⽶的⼤坝:列表推导式:条件表达式(if-else)Listderivation:Conditionalexpression(if-else)[expression_if_true

if

condition

else

expression_if_false

for

item

in

iterable]带if-else的列表推导式注意:if-else条件在for循环前⾯!与纯if条件过滤不同,

这⾥的if-else是条件表达式,⽤于决定每个元素的值,⽽不是过滤元素。列表推导式:条件表达式示例Listderivation:Examplesofconditionalexpressions条件表达式示例这相当于:numbers=

[1,

2,

3,

4,

5]labels=

["Even"if

num%

2

==

0

else

"Odd"

for

num

in

numbers]#

labels结果

:

['Odd',

'Even',

'Odd',

'Even',

'Odd']将数字列表中的偶数标记为"Even",

奇数标记为"Odd":列表推导式:条件表达式示例Listderivation:Examplesofconditionalexpressions条件表达式示例labels

=

[]for

num

in

numbers:这相当于:numbers=

[1,

2,

3,

4,

5]labels=

["Even"if

num%

2

==

0

else

"Odd"

for

num

in

numbers]#

labels结果

:

['Odd',

'Even',

'Odd',

'Even',

'Odd']将数字列表中的偶数标记为"Even",

奇数标记为"Odd":if

num%

2

==

0:labels.append("Even")

else:labels.append("Odd")列表推导式:条件表达式

Listderivation:Conditionalexpression)[xfor

x

in

data

if

condition]对⽐两种不同的列表推导式条件⽤法过滤元素(if在for后⾯):[xif

condition

else

y

for

x

in

data]转换元素(if-else在for前⾯):列表推导式:嵌套Listderivation:Nesting嵌套的for循环按照从左到右的顺序,相当于外循环在前,

内循环在后。嵌套列表推导式列表推导式也可以嵌套,⽤于处理多层可迭代对象,或实现类似嵌套循环的功能。[expression

for

outer_item

in

outer_iterable

for

inner_item

in

inner_iterable]两层嵌套示例语法:列表推导式:嵌套示例Listderivation:Nestedexample扁平化—个⼆维列表flattened=

[numfor

row

in

matrix

for

num

in

row]#flattened

结果

:

[1,

2,

3,

4,

5,

6,

7,

8,

9]matrix=

[

[1,

2,

3],

[4,

5,

6],

[7,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论