列表
for语句遍历列表:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
注意冒号和缩进。for循环语句块中还可以写很多语句。
range()函数:生成一系列数字。如 range(1, 6)生成1, 2, 3, 4, 5。
range函数还可以指定步长,如 range(2,11,2)生成2, 4, 6, 8, 10。
要创建数字列表,可使用函数list()将range()的结果直接转换为列表。如 numbers = list(range(1,6))
最大值函数max(),最小值函数min(),求和函数sum()
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45
列表解析:
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
squares = [value**2 for value in range(1,11)]
print(squares)
输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引,与range()函数一样
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) # 输出列表前三个元素
print(players[1:4]) # 输出列表第2~4个元素
print(players[:4]) # 没有指定第一个索引,从列表开头开始
print(players[2:]) # 没有指定第二个索引,到列表结尾结束
print(players[-3:]) # 输出列表最后三个元素
遍历切片
for player in players[:3]:
print(player.title())
复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
这样得到的两个列表是没什么关系的列表,修改其中一个不会影响另一个。
但是如果直接像下面这样赋值
friend_foods = my_foods # friend_foods和my_foods指向的是同一个列表
这里将my_foods赋给friend_foods,而不是将my_foods的副本存储到friend_foods。这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,因此这两个 变量都指向同一个列表。修改其中一个也会修改另一个。
基本上,当你试图使用列表的副本时,如果结果出乎意料,请确认你像第一个示例那样使用切片复制了列表。
元组
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
定义元组用圆括号,访问元组元素的语法与访问列表元素相同
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
dimensions[0] = 250 # 非法语句,会报错,不能给元组的元素赋值
像列表一样,也可以使用for循环来遍历元组中的所有值
修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组
dimensions = (200, 50)
dimensions = (400, 100) # OK
Python编程:从入门到实践. Eric Matthes (作者) 袁国忠(译者)