列表

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 (作者) 袁国忠(译者)