1、遍历列表
对列表中的每个元素执行相同的操作,往往需要遍历列表中的每个元素,实现重复操作的情况,常用FOR循环来实现,如下所示:
heros = ['关羽','张飞','赵云'] for hero in heros: print(hero.title() + '是个大英雄!') print(heros) print(hero)
在for循环的作用下,代码每次执行,都会在'heros'读取一个元素复制到临时列表'hero'中,同时输出'print()'中的语句,直到列表heros中的元素被完全读取完为止,输出结果如下:
关羽是个大英雄! 张飞是个大英雄! 赵云是个大英雄! ['关羽', '张飞', '赵云'] 赵云
若让程序更加丰富,可靠考虑率缩进问题,如下所示:
heros = ['关羽','张飞','赵云'] for hero in heros: print(hero.title() + '是个大英雄!') print(hero.title() + "的主公是刘备. ") print('他们都是三国时期的人!')
上例中有三个打印输出,其中前两个有缩进,最后一个没有。在Python中,缩进用来表示需要在方法内执行的操作,比如在for循环中,for语句下面的代码就是通过缩进来表示需要执行的重复操作。而没有缩进的语句只执行一次,如下所示:
关羽是个大英雄! 关羽的主公是刘备. 张飞是个大英雄! 张飞的主公是刘备. 赵云是个大英雄! 赵云的主公是刘备. 他们都是三国时期的人!
由上例可看出在for循环中额,没有缩进的代码只会执行一次,只有缩进的代码才会反复执行
2、创建数值表
range()函数的作用是生成一系列数字,用于基本的数字处理工作,如下所示:
for value in range(1,5): print(value)
此处生成的数据并不包含5,原因在于range()函数在生成数据的时候,会从规定的第一个数据开始生成,当读取到第二个数据时结束,因此range()函数生成的数据是个半开半闭区间,生成结果如下:
1 2 3 4
使用range()函数生成数字的时候,可以连用list()函数,使生成的数字转换成列表,如下所示:
numbers = list(range(1, 20,3)) print(numbers)
如上例所示,当list()函数和range()函数合用的时候,range()函数的结果作为list()函数的元素来使用0,此外补偿的运用,让从1到20的半开半闭区间中,每一个增量值都间隔三位,直到读取到20跳出,输出结果如下:
[1, 4, 7, 10, 13, 16, 19]
range()函数几乎可以创建任何需要的数据集合,如下所示:
squares = [] #定义一个空列表,用于数据存放 for values in list(range(1,11)): #定义for循环函数,规定字段values的值在集合范围中 square = values**2 #定义变量square存储values**2的值(**为乘方运算) squares.append(square) #向空列表squares添加每次循环后square的值,存储起来 print(squares) #打印循环结束后squares的值 print(max(squares)) #打印循环结束后squares的最大值 print(min(squares)) #打印循环结束后squares的最小值 print(sum(squares)) #打印循环结束后squares的所有元素之和
由上例中可发现,输出时引用了max(),min()和sum()三个函数,作用和其他函数一样,输出结果如下所示:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 100 1 385
上例也可写成解析列表形式,如下所示:
squares = [value**2 for value in range(1,11)] print(squares)
解析列表是一种独特的写法,首先要制定一个描述性的列表名,然以后指定方括号,按照从左到右的顺序,先从左方括号开始,写下定义的表达式,接着写下for循环用于为表达式提供值,然后用右括号封口,这就是一个完整的解析列表,上例改写后,输出结果未变,如下所示:
3、切片在Python中,实现对列表中部分元素的处理,称之为切片,如下所示:
players = ['charles','martina','michael','florence','eli'] print(players[1:4]) print(players[:4]) print(players[1:]) print(players[:])
在上例中,代码访问了列表players位于1到4的元素,输出结果如下所示:
['martina', 'michael', 'florence'] ['charles', 'martina', 'michael', 'florence'] ['martina', 'michael', 'florence', 'eli'] ['charles', 'martina', 'michael', 'florence', 'eli']
由上例可看出,设定切片的范围,使用[x:y]格式的代码来表示的,当只设定截止,不设定开始时,数据从头开始截取;当只设定开始,不设定截止时,数据从开始截取到结束;如果都不设定,数据会截取全部。
切片的用途十分广泛,最基本的用法例如列表的复制,如下所示:players = ['charles','martina','michael','florence','eli'] new_players = players[:] print(players) print(new_players)
将列表players设置不限定开始结束的切片,这样就能够取到列表players中的所有值,然后将其赋值给new_players,这样new_players就获取了列表layers中的所有值,输出结果如下所
['charles', 'martina', 'michael', 'florence', 'eli'] ['charles', 'martina', 'michael', 'florence', 'eli']
对于不能修改的值,Python称之为元组。元组使用圆括号标识,类似于列表,也可以用索引来访问,但是不能修改,如下所示:
dimensionas= (200,50) print(dimensionas[0]) print(dimensionas[1])
上例输出结果如下所示:
200 50
元组中值的遍历也如同列表一样,如下所示:
dimensionas= (200,50) for value in dimensionas: print(value)
输出结果如下所示:
200 50
元组中的元素不能修改,如果一定要修改元组中的数据,只能通过重新赋值的方式修改。