《Python编程从入门到实践》学习笔记<4>:操作列表

<四>操作列表
1、遍历列表
 对列表中的每个元素执行相同的操作,往往需要遍历列表中的每个元素,实现重复操作的情况,常用FOR循环来实现,如下所示:
heros = ['关羽','张飞','赵云']
for hero in heros:
    print(hero.title() + '是个大英雄!')
print(heros)
print(hero)

在for循环的作用下,代码每次执行,都会在'heros'读取一个元素复制到临时列表'hero'中,同时输出'print()'中的语句,直到列表heros中的元素被完全读取完为止,输出结果如下:

关羽是个大英雄!
张飞是个大英雄!
赵云是个大英雄!
['关羽', '张飞', '赵云']
赵云
 由上例可以看出,for循环执行的时候,并未对源列表造成影响,而临时列表中也只存储每次读取的结果,之行结束后结果删除,继续下次执行的结果。
 若让程序更加丰富,可靠考虑率缩进问题,如下所示:
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']
4、元组
 对于不能修改的值,Python称之为元组。元组使用圆括号标识,类似于列表,也可以用索引来访问,但是不能修改,如下所示:
dimensionas= (200,50)
print(dimensionas[0])
print(dimensionas[1])

上例输出结果如下所示:

200
50

元组中值的遍历也如同列表一样,如下所示:

dimensionas= (200,50)
for value in dimensionas:
    print(value)

输出结果如下所示:

200
50

 元组中的元素不能修改,如果一定要修改元组中的数据,只能通过重新赋值的方式修改。 
 
原文地址:https://www.cnblogs.com/a404790696/p/10876308.html