摘要
01 for循环语句
02 数字列表
03 切片(slice)与元组(Tuple)
04 今日回顾
01 for循环语句
首先,来看一个例子。
在这个程序中,第二行中,我们使用了一个 变量member,这一行程序将会使程序将列表family中的第一个值储存到变量member当中,接着往下,我们使用print语句将member打印了出来,由于我们使用了for语句,并且family中还有元素,所以程序将会再次运行第二行,这一次会将列表中的第二个值赋给变量member,再接着运行print语句,整个程序会循环运行,直到列表中的最后一个元素被赋给变量member。
那么我们来稍微总结一下,这里的for循环语句可以这样来看,
for 变量 in 集合 :
那么这一句作用就是,依次将集合中的值赋给变量,直至集合中的最后一个值赋给变量。
那么要如何使用形如for 变量 in 集合 : 这样的for循环语句呢?
首先来看,以冒号结尾。冒号会告诉Python,从接下来的第一行开始,for循环语句就开始了。那么Python如何知道接下来的程序里,哪些是for循环内部的语句,哪些不是for循环语句内部的呢?我们看下一个例子。
可以看到,其中第三行与第四行都循环运行了,而第五行则只运行了一次。或许你也发现了,关键就在于第三行,第四行语句前的空格,我们将之称为缩进。
缩进
在Python中,缩进用以确定一行代码与上一行代码的关系。在for循环语句中,冒号后缩进了的代码被视为循环内的内容,而从第一行未缩进的代码开始往后则不被视为循环内容。
也正是这样,第三行与第四行因为有缩进,所以被视作for循环内的内容而循环执行,但第五行则没有缩进因而不被循环执行。
我们要知道缩进与空格不完全是一回事。在Python中,缩进是使用Tab键(也说制表符键)键入的,而空格则是空格键键入的,你可以使用多个的空格(具体是几次可以在你的文本编辑器里设置,通常使用四个空格)来用作缩进,也可以直接按下Tab键直接键入缩进(默认的缩进长度是四个空格),但是二者之间绝对不能混用!!!如下图,
使用空格来做缩进,没有问题,同样的直接使用Tab键键入缩进也没有问题,见下图
但如果我混用了空格与缩进,那么就会出问题。如下图
看起来并无差别,但如果选中我们就发现其实我混用了空格与缩进,如下图
那么如果我们来运行这个程序,会出现什么?
出现了报错程序!所以!千万不要混用空格与缩进!!!
02 数字列表
什么是数字列表呢?简而言之,元素全是数字(Number)的列表。
例如这样[1,2,3,4,5,6,7,8]
函数range()与list()
range()
作用:
类似一个整数“列表”(不是数据类型列表),可用于创建数字列表
使用方式:
range(stop);range(start,stop,step)
用中文来写就是range(最大值),range(最小值,最大值,步长)
函数list()可以使将range()函数生成的数字转换为列表,可与range()函数一起使用,用以快速生成数字列表。
示例:
需要注意的是,range(1,6)生成的数字到5截至,也就是说,range()函数生成的数字是从指定的最小值开始,到最大值的前一个数,且要注意,生成的数都是整数。如果没有指定最小值,例如range(6),那么默认的最小值是0。
此外,range()函数的步长(就是两个相邻数字之间的差)默认为1,但也可自己来设定,用以生成类似奇数列或者偶数列。但要记得,如要规定步长,一定要设定最大值与最小值,如下图,输出了0到8间的偶数,
同理,也可以输出奇数列,我们只需要调整一下起始值。
对数字列表进行简单计算
三个函数:min() , max() ,sum()这三个函数都是对数字列表使用的其意义分别为:找出最小值,找出最大值,列表数字求和
如下图所示:
03 切片(slice)——使用列表的一部分
把整个列表比作一块肉,你可能不想吃两边的肉,只想吃中间那块里脊肉,而这块中间被你切下来的肉就是切片(slice),那么要怎么处理呢?
我们之前有学到,访问列表中的某个元素的方法是 列表名[索引],那么类似的,访问切片的方式是 列表名[起始索引:终止索引] 例如:
可以看到,在第五行当中,我们使用了一个列表切片,我们指定的索引是[0:2],输出的结果是列表中第一个与第二个值,因此,切片的索引范围与函数range()的范围类似,都是由指定的起始值,到指定的最大值的前一个值。
那么现在,可以思考一个问题:
如何将一个列表内的值依次打印出来呢?
我们尝试使用前面学到的函数,
这个过程,用中文来说,叫做,遍历列表。
同样的,我们只需要将在列表的后面填上索引范围就能实现遍历列表切片。如下图,
如果在使用切片时指定了终止索引,未指定起始索引,那么默认从头开始到终止索引;
如果指定了起始索引,未指定终止索引,那么默认从起始索引到列表结尾。
如果两个索引都为指定,形如列表名[:],只有一个中括号以及冒号,那么意味着,这是一个副本切片,类似于将原列表复制了一份。
接下里,我们做一件事:复制列表。
现在我给出这样的一个列表[1,2,3],将其储存到变量list_1中,并且完成复制,将复制的列表储存到list_2中,再将列表list_1修改为[1,2,3,4].
完成后分别打印出list_1,list_2
我猜想,你会这样去做:
并且你认为输出的结果应该是这样的
但实际上却是这样的
????????
突然就开始怀疑Python,怀疑人生了。
不慌,我们改改程序试试看,
在将第二行的list_2=list_1 改为list_2=list_1[:] 之后貌似就达到了预期效果,这是为什么呢?
要来解释这一点,我们就要回到变量说起了,
大家应该还记得,变量是一个存储地址,没错只是一个地址,只意味着变量本身是不包含任何数据的,包含数据的是放在这个变量盒子中,那些叫做整数,字符串,列表的东西。
在第一次的程序中,
第一行我们将列表[1,2,3]定向(可以理解为取了一个名字)到变量list_1,第二行list_2=list_1则是将list_1定向到了变量list_2,
这两次操作就类似于,给一个人取了两个名字。我们原先有一个列表[1,2,3],先是给这个列表取名list_1,然后又给list_1取名为list_2,那么也就是说,列表[1,2,3]同时有了两个名字list_1和list_2,那么无论你叫list_1还是list_2其实都是指的同一个东西,这也就是为什么第一次尝试的时候会失败。
而第二次的程序,
我们在第二行这样写 list_2=list_1[:] ,是将list_1的切片定向到了变量名list_2, 也就是说,在执行切片操作后,原来只有一个列表,但现在就有两个列表。
如果实在无法理解,可以先强行的记住。
元组(Tuple)——标准的数据类型
元组与列表极为类似!!!
现阶段,你可以将元组视为列表,但是有两点区别:
- 元组不使用方括号,使用圆括号,如:tuple=(1,2,3)
- 元组在定义之后无法修改,只能重新定义也就是说在定义一个元组 tuple=(1,2,3)之后,你无法使用例如append(4)这样的方法进行修改,使其成为(1,2,3,4)但你可以再次定义也就是 tuple=(1,2,3,4)来达到你想要的效果。
04 今日回顾
- for语句的使用
- 如何生成数字列表
- 切片的使用
此外,在最后,介绍一下注释功能,Python会将#后面的代码视为注释,注释不会运行。
加入我们一起【挑战自学Python编程】
明日内容:if语句
(需要练习或者其他资源可以关注我,交个朋友!)