3.1遍历整个列表

你经常需要遍历列表的所有元素,对每个元素执行相同的操作。可以使用python中的for循环。

magicians.py

magicians = ['alice','david','carolina']
for magician in magicians:
     print(magician)

>>>alice
   david
   carolina

深入研究循环

在magicians.py中使用的简单循环中,python首先读取其中的一行代码:

for magician in magicians:

这行代码让python获取列表magicians中的第一个值(‘alice’),并将其存储到变量magician中。接下来,python读取下一行代码:

print(magician)

它让python打印magician的值——依然是’alice’。鉴于该列表还包含其他值,python返回到循环的第一行:

for magician in magicians:

python获取列表中的下一个名字——’david’,并将其存储到变量magician中,再执行循环体代码。依此往复,直到for循环后面没有其他的代码。另外,对于用于存储列表中每个值的临时变量,可以指定任何名称。

3.2创建数值列表

使用函数range()

函数range()让你能轻松生成一系列数字。

for value in range(1,5):
     print(vale)

1
2
3
4

函数range()让python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值。使用range()时如果不符合预期,尝试+1或-1。

使用range()创建数字列表

要创建数字列表,可使用函数 list() 将 range() 的结果直接转换为列表。

numbers = list(range(1,6))
print(numbers)

>>>[1,2,3,4,5]

使用函数range()时,还可指定步长。如要打印1~10内的偶数。

even_numbers = list(range(2,11,2))
print(even_numbers)

>>>[2,4,6,8,10]

函数range()从2开始,然后不断加2。

使用函数range()几乎能够创建任何需要的数字集。例如,创建一个包含前10个整数的平方列表。在python中,两个星号(**)表示乘方运算。

squares = []
for value in range(1,11):
    squrare = value**2
    squares.append(squrare)
print(squares)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还可以不使用临时变量,直接将每个计算得到的值附加到列表末尾:

squares = []
for value in range(1,11):
    squares.append(value**2)
print(squares)

对数字列表执行简单的统计计算

digits = [1,2,3,4,5,6,7,8,9,0]
min(digits)
max(digits)
sum(digits)

列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素

squares = [value**2 for value in range(1,11)]
print(squares)

要使用这种语法,首先指定一个描述性的列表名,如squares;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2.接下来编写一个for循环,用于给表达式提供值,再加上右括号。

3.3使用列表的一部分

切片

要创建切片,可指定要使用的第一个元素的索引和最后一个元素的索引加1。要输出列表中的前3个元素,需要指定索引0~3,这将输出0,1,2。

players = ['a','b','c','d','e']
print(players[0:3])

>>>['a', 'b', 'c']

列如你要取列表第2到4个元素,可以指定索引为1,4。如果没有指定第一个索引,python将自动从列表头开始提取:同理,不指定最后一个索引,python将自动从第一个索引到列表末尾。

负数索引返回离列表末尾相应距离的元素。例如,如果你要输出最后3个元素,可使用切片players[-3:]。

players = ['a','b','c','d','e']
print(players[-3:])

>>>['c', 'd', 'e']

遍历切片

如果要遍历列表中的部分元素,可再for循环中使用切片。

players = ['a','b','c','d','e']
for player in players[:3]:
    print(player.title())

A
B
C

复制列表

要复制列表,可创建一个包含整个列表的切片。

my_love = ['a','b','c','d','e']
friend_love = my_love[:]
print(my_love)
print(friend_love)

['a', 'b', 'c', 'd', 'e']
['a', 'b', 'c', 'd', 'e']

3.4元组

python将不能修改的值称为不可变的,而不可变的列表称为元组。

定义元组

例如,有一个大小不能变的矩形,可将其长宽存储在一个元组中,从而确保它们不可修改。

dimensions = (200,50)
print(dimensions[0])
print(dimensions[1])

200
50

遍历元组中的所有值

像列表一样,元组也可以用for循环来遍历。

dimensions = (200,50)
for dimension in dimensions:
    print(dimension)

200
50

修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此要修改矩形的尺寸,可重新定义整个元组

dimensions = (200,50)
for dimension in dimensions:
    print(dimension)

dimensions = (400,100)
for dimension in dimensions:
    print(dimension)


200
50
400
100
dimensions = (200,50)
for dimension in dimensions:
    print(dimension)

dimensions = (400,100)
for dimension in dimensions:
    print(dimension)


200
50
400
100
dimensions = (200,50)
for dimension in dimensions:
    print(dimension)

dimensions = (400,100)
for dimension in dimensions:
    print(dimension)


200
50
400
100