引言:本文主要讨论for语句和while语句。for语句属于遍历循环,而while语句属于类型循环。除了两个循环语句之外,引入了三个语句,break、continue和pass来控制循环结构中的程序流。在此基础上,还介绍了链表推导,这是一种特殊的循环语句。
如需转载,请联系大数据(ID: hzdashuju)
循环语句,也称为重复结构,用于重复执行一个操作。面对大数量级的重复操作,即使有计算机的帮助,重复写代码也是很费时间的,所以要用循环语句。一般在使用循环语句时使用条件判断,根据判断公式的返回值决定是否执行循环体。
循环分为两种模式,一种是满足条件时执行循环体;另一方面,当条件不满足时,执行循环体。前者称为正周期,后者称为直到周期。
在图1中,虚线框中有一个正循环结构,包括判断条件、循环体和连接各部分的流线。程序执行时,判断条件的真假。如果判断为真,则执行循环体;如果判断为假,则不再执行循环体,循环结束。When-type循环先通过条件判断,满足循环条件再执行循环体,所以也叫预测试循环。
▲图1电流循环结构
在图2中,在虚线框中有一个最新的循环结构,它包括判断条件、循环体和连接各部分的流线。程序执行时,循环体执行一次,然后判断执行循环的结果是否满足判断条件。当条件满足时,再次执行循环体;如果不满足条件,将不执行循环体。直到型循环在执行判断前进入循环体,所以也叫后测型循环。
▲图2直到循环结构
Python中主要有两种循环语句,分别是for语句和while语句。前者以遍历的形式指定循环范围,后者根据判断的返回值决定是否执行。为了更灵活地操纵循环的流向,有必要使用break、continue和pass语句。
01代表
for循环是一个迭代循环,相当于Python中的一个通用序列迭代器。它可以遍历任何有序序列,如字符串、列表、元组等。,也可以遍历任何可迭代对象,如dict。与C语言不同,Python中的for语句将按照系列中成员的顺序遍历系列中的所有成员。需要注意的是,在for循环中改变任何序列的内容都是危险的!
for语句不属于立即循环或直到循环。它遍历序列对象中的元素,并为每个元素运行一次循环体。程序开始执行的时候已经指定了循环的步数,所以不属于条件判断。
在for语句中,for和In匹配形成for-in循环结构,for-in循环依次迭代列表或元组中的每个元素。for语句的基本语法格式如下。
按变量的顺序:
损益表
for语句的常见语法格式和参数描述如下:
序列:接收序列,表示遍历范围。无默认值操作语句:接收操作语句,表示执行一段代码。无默认值程序的执行以“for variable in sequence”开始,将序列中的每个元素代入一个变量,执行一次operation语句1,重复次数为序列中元素的个数。
为了显示for循环的遍历函数,依次打印列表中的名称,如清单1所示。
代码清单1:for语句遍历提取str# for语句的简单遍历
名字= ['迈克尔','鲍勃','特雷西']
#遍历输出名称中的元素
对于内部名称:
打印(名称)
输出结果:
迈克尔
上下移动
屈赛
for语句还可以实现dict的遍历方法,如清单2所示。
代码清单2:for语句遍历查询dictdic = {'a': 1,' b': 2,' c': 3,' d': 4}
#遍历键值对
print('key_value:',end = ' ')
forkey,value indic.items:
打印(键,值,sep = ':',结束= ')
#遍历键
print(' key:',end = ' ')
forkey indic.keys:
打印(键,结束= ' ')
#遍历值
打印('值:',end = ' ')
forvalue indic.values:
打印(值,end = ' ')
输出结果:
key_value:a:1 b:2 c:3 d:4
钥匙:a b c d
数值:1 2 3 4
如清单2所示,for语句中用于遍历的“变量”不仅可以是Python中的默认代词,也可以是常规变量。
像条件语句一样,循环语句也可以使用嵌套,这也丰富了程序的功能。设计成绩录入系统,必须录入姓名和课程两种信息,不能只用一层流转来实现,可以采用两层流转结构,如代码清单3所示。
代码清单3:嵌套for语句学生= ['小明','小红']
科目= ['语文','数学']
sum1 = []
avg = []
对于学生:
打印('开始输入%s的测试分数!'%i)
sum = 0
forj insubjects:
打印('请输入%s分数:' %j ')
score = int(输入)
总和+=分数
平均值=总和/ 2
avg.append(平均值)
sum1.append(sum)
打印(学生,“总分为”,sum1,“,”,“平均分为”,avg)
打印('完成分数输入!')
输出结果:
开始录入小明的考试成绩!
请输入您的语言成绩:
97
请输入您的数学分数:
90
开始录入小红的考试成绩!
请输入您的语言成绩:
八十九
请输入您的数学分数:
100
['小明','小红']总分为[187,189],平均分依次为[93.5,94.5]
完成分数录入!
理论上,for循环也可以无限嵌套,但不建议这样做。
02 while
while语句是Python中最常用的递归结构。与for循环不同,while循环结构包含条件判断公式,是条件循环,属于正循环。
while语句的最基本形式包括顶部的布尔表达式和一个或多个属于while代码块的缩进语句。您还可以在末尾包含一个else代码块,它与while代码块处于同一级别,并形成一个while-else形式。while语句的基本语法格式如下。
而条件表达式:
操作说明1
操作说明2
while语句中常用的参数及其描述如下:
条件表达式:接收布尔表达式,表示判断条件是否成立。无默认值操作语句:接收操作语句,表示执行一段代码。无默认值当执行while语句时,只要顶部的条件表达式返回真值,嵌套在while部分中的递归代码总是被执行。当条件表达式返回false值时,操作语句不再执行,程序跳出while结构。
while语句的基本用法如清单4所示。
代码清单4:while语句sum = 0
n = 99
whilen >;0:
sum += n
n -= 2
打印(总和)
产量:2500
如果布尔表达式没有
如果布尔表达式总是返回1,while语句将变成一个无限循环,如清单5所示。
代码清单5:while语句无限循环#布尔表达式为常量1,始终为真
while1:
打印(“循环”)
输出结果:
循环
循环
…
#布尔表达式每次递归运算都是2,而且总是真的
x,y = 2,1
whilex / y:
打印(“循环”)
x = x * 2
y = y * 2
输出结果:
循环
循环
…
运行代码清单5,“循环”将被连续打印。清单5展示了创建无限循环的两种方法,要么在while之后编写一个固定的真值,要么编写一个总是生成真值的表达式。要终止一个无限循环,可以用快捷键Ctrl+C中断循环的执行,也可以用循环终止语句,后面会讲到。
在while语句中灵活使用布尔表达式和替换表达式的递归值可以实现特殊功能,如清单6所示。
代码清单6:while语句实现str截取字符串= 'abcd '
行驶时:
打印(字符串)
#此语句的递归计算是每次从字符串的第二个字符开始截取
string = string[1:]
输出结果:
加快收寄投递系统
bcd
坎德拉
d
代码清单6包含了一个自减的迭代值,它不是通过明显的运算符实现自减,而是使用了索引法则。X变量截取str中的第二个值到最后,每次截取str前面的字符。当只剩下一个字符时,再次截取的结果只有空,布尔表达式返回0,循环结束。
从清单5和清单6中,我们可以看到程序流可以通过灵活地使用递归来控制。
While循环也可以使用嵌套的、嵌套的while循环来实现评分输入系统,如清单7所示。
代码清单7:嵌套while语句j = 1
whilej <。= 2:
sum = 0
i = 1
Name = input('请输入学生姓名:')
whilei <。= 2:
打印('请输入%d门的考试结果:' %i ')
sum += int(输入)
i += 1
avg =总和/ (i-1)
打印(姓名的平均得分为%d个字符)
j += 1
打印('学生成绩输入完成!')
输出结果:
请输入学生姓名:小明
请输入第一次考试的结果:
98
请输入第二门课程的考试成绩:
88
小明平均分93
请输入学生姓名:小红
请输入第一次考试的结果:
65
请输入第二门课程的考试成绩:
100
小红平均分82
学生成绩输入完成!
在代码清单7中,第一层的while语句用于输入人名,在第二层,在每个人名下输入多个等级。布尔表达式决定了输入的学生和课程的数量。
休息,继续并通过
在前两节中,我们已经介绍了Python中的两种循环语句。Break、continue、pass语句也可以嵌入到loop语句中,灵活改变流向,实现更多功能。
1.打破
在Python中,break语句用于终止循环语句的执行。使用此语句时,即使判断循环条件为真或序列不是完全递归的,循环语句也会立即停止。
Break语句一般与条件判断结合使用,因为程序的终止必须在满足某个条件时执行。在for循环和while循环中使用break语句如代码清单8所示。
代码清单8:break语句的使用# break语句用于for循环
string = "Python "
fori instring:
#当遍历字符串中的字符n时,不再执行else代码块
ifi == 'n ':
打破
else:
print("letter:{} "。格式(I))
输出结果:
字母:P
字母:y
字母:t
字母:h
字母:o
# break语句用于while循环
计数= 0
同时:
打印(计数)
计数+= 1
#当计数等于3时,跳出循环,不再进入循环体
ifcounts == 3:
打破
输出结果:
0
一个
2
如清单8所示,在for循环和while循环中使用break语句是有区别的。当在for循环中使用时,遍历中只有一次循环体的执行被终止;当在while循环中使用时,整个循环终止。
Break仅在此级别终止循环。如果有多个嵌套循环,在其中一个循环中写入break只会在这个循环中生效,程序将跳到上一个循环继续运行,如代码清单9所示。
代码清单9:break语句用于嵌套循环结构#第1层循环,2次遍历
fori inrange(2):
打印("-% d-% I)
#第2层循环,10次遍历
forj inrange(10):
#使用break语句,j >: 1,不执行循环体
ifj >。1:
打破
打印(j)
输出结果:
- 0 -
0
一个
- 1 -
0
一个
在代码清单9中,break语句在条件判断表达式“if j >: 1:”中,所以虽然j的指定遍历数是10,但是遍历实际上只运行了两次。由于break语句只在这个级别终止循环,所以我仍然遍历了两次,而不是在第一次遍历结束时结束。
2.继续
在Python中,continue语句用于跳出当前循环并执行下一个循环,而break语句跳出整个循环。两种说法的作用明显不同。
如果一段代码包含一个continue语句,当执行循环继续时,首先忽略循环,在剩余的仍满足该级条件的循环数中继续执行,该级循环不终止。事实上,如果在某个层的每个循环中使用continue语句,就相当于使用break语句。
要打印一个表,如果您不打印一些指定的数字,或者只打印一些类型的数字,您可以使用continue语句跳过一些循环时间,该语句可以在for循环和while循环中自由使用,如清单10所示。
代码清单10:continue语句用于循环结构#当I等于1或3时,继续后跳过打印语句
fori inrange(0,5):
ifi == 1ori == 3:
继续
打印(I)
输出结果:
0
2
四
#如果遇到偶数,继续后跳过打印语句
计数= 0
whilecounts <。10:
计数+= 1
ifcounts % 2== 0:
继续
打印(计数)
输出结果:
一个
三
五
七
九
一旦在嵌套循环的第n层使用了break语句,该层的循环将被终止,但是当执行(n-1)层的循环时,第n层的循环仍将被创建和执行。continue语句也是如此,只是层的其余部分仍将被执行。因此,无论使用哪种循环终止语句,都只会影响使用终止语句的循环所在的层,不会干扰其他层。清单11显示了循环中使用的continue语句的一个例子。
代码清单11:continue语句用于嵌套循环结构#第1层循环,2次遍历
fori inrange(2):
打印("-% d-% I)
#第2层循环,5次遍历
forj inrange(5):
#当j等于2或4时,不执行循环体
ifj = = 2orj = = 4:
继续
打印(j)
输出结果:
- 0 -
0
一个
三
- 1 -
0
一个
三
3.通过
Pass是一个空语句,不做任何事情,只起到占用空间的作用,作用是保持程序结构的完整性。pass语句虽然什么都不做,但是如果暂时不确定在一个地方放什么样的代码,可以先放一个pass语句,这样代码才能正常运行。Pass语句不是循环或条件语句的一部分,但它在代码形式上类似于break和continue。
使用pass语句遍历输出字符串和数值计算,如清单12所示。
代码清单12:pass语句“Python”中的前置元素:
当# element为y时,什么都不会做,也不会输出
ifelement == "y ":
通过
else:
打印(元素)
输出结果:
P
t
h
o
n
计数= 0
whilecounts <。5:
计数+= 1
当# i=3时,不执行循环体
ifcounts == 3:
通过
else:
打印(计数** 2)
输出结果:
一个
四
16
25
从清单12可以看出,Python占据了“p”和“t”之间的一个位置,当循环遍历到“y”时什么也不做;当I等于3时,不进行幂运算,但不影响其他数值。如果上述两个代码在pass位置缺失,程序就不会执行,因为判断条件没有给出相应的执行语句,会导致逻辑错误。使用pass语句占用空间,一方面是为了程序的正常执行,另一方面是为了方便以后补充操作语句。
04列表派生
导数公式是一种可以从一个数据序列构造另一个新数据序列的结构,可以非常简洁地构造新变量。列表派生是最常用的类型之一。
列表推导,也称列表解析公式,是Python迭代机制的应用,是创建列列表的高效方式,可以动态创建列表。因为列表派生必须使用遍历循环,所以属于特殊循环。
使用列表推导时,需要用[书写推导】。列表中的元素可以来自其他类型的序列、迭代对象或满足特定条件的自建序列。使用列表派生的好处是代码更简单,实现效率更高。
列表派生的基本语法格式如下:
if条件表达式中变量序列的[运算语句]
列表推导中常用的参数及其描述如下:
操作语句:接收操作语句,表示执行一段代码。无默认值序列:接收序列,表示遍历范围。无默认值条件表达式:接收布尔表达式,表示判断条件是否成立。无默认值列表派生可能不包含条件表达式,而只是遍历来生成一个列表,如清单13所示。
代码清单13:使用列表推导式生成listvec = [-4,-2,0,2,4]
#创建一个包含多个向量元素的数组
print([x * 2forx invec)
输出结果:
[-8, -4, 0, 4, 8]
#创建包含二元元组的列表
print([(x,x ** 2) forx inrange(6)]
输出结果:
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
在清单13中,除了简单的列表派生形式,它还显示了列表派生中可以使用各种函数和变量类型。此外,列表派生还可以包含条件语句,如清单14所示。
代码清单14:包含条件语句的列表推导式#过滤列表并删除列表中的负数
print([x forx invec ifx & gt;= 0])
输出结果:
[0, 2, 4]
列表派生最大的优点是简洁,这需要和常规的编程方法进行比较。如清单15所示,要创建一个由平方数组成的列表,这里的两种方式是等价的,但是列表派生的方式显然更简洁。
代码清单15:常规方式与列表推导式对比#创建一个正方形数字列表:正常方式
正方形= []
forx inrange(10):
squares.append(x ** 2)
打印(正方形)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#创建一个方形数字列表派生
正方形= [x ** 2forx inrange(10)]
打印(正方形)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
嵌套循环也可以在列表派生中实现,如清单16所示。
代码清单16:包含嵌套循环的列表推导式#打印由元组组成的列表,其中I是从0到2,j是从0到2
[(i,j) fori inrange(0,3) forj inrange(0,3)]
输出结果:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
#打印由元组组成的列表,其中I介于0和2之间且小于1,j介于0和2之间且大于1
[(i,j) fori inrange(0,3)ifi & lt;1forj inrange(0,3)ifj > 1。1]
输出结果:
[(0, 2)]
清单16所示的列表派生将元素集成在两个不同的列表中。列表派生包含一对括号,括号中有一个表达式,后跟一个for语句,后跟零个或多个for语句或if语句。表达式是通过for语句和if语句计算的,结果用作新列表的元素。
本文摘自由出版商授权的Python3智能数据分析快速指南。
Python3智能数据分析快速指南的扩展阅读
点击上图学习购买
转载请联系微信:DoctorData
推荐语言:这本书假设你有一定的数据分析基础,但是没有Python和AI的基础。为了帮助你快速掌握智能数据分析所需的技术和方法,本书专门讲解了Python和AI中必须掌握的知识点,内容由浅入深,循序渐进。从环境配置、基本语法、基本功能到第三方库的安装使用,各种操作步骤、函数、工具、代码示例等。详细解释,以确保所有合格的读者可以快速入门。
“大数据”内容合作伙伴的“阅读团队”上线了!
你最近在看什么书?有哪些经验想和大家分享?
近日,数据大叔做了一件大事——与高质量的图书出版者——机械工业出版社——华章公司联合开展图书评估活动。
简单来说,你可以免费看新书。可以免费看新书,同时也只需要做个读书笔记。详情请在大数据公众号后台对话框回复合作伙伴。
问:你最常使用哪种循环语句?
转载/提交请联系:baiyu@hzbook.com
点击阅读原文,了解更多1.《for语句 值得收藏!16段代码入门Python循环语句》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《for语句 值得收藏!16段代码入门Python循环语句》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/774882.html