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