处理列表中的部分元素——切片
1. 切片
players = ['charles', 'martina', 'michael', 'florence', 'eli'] print(players[0:3]) # 打印列表的切片,其中包含前三个元素,输出也是一个列表 print(players[1:4]) # 提取列表的第2、3、4个元素 print(players[:4]) # 没有指定索引,故打印出列表的前4个元素 print(players[2:]) # 没有指定终止索引,故打印出列表中第二个元素之后的所有元素(不包含第二个,由于索引从0开始) print(players[-3:]) # 列表从右往左的索引从-1开始,故打印出列表的最后三个元素 print(players[:-2]) # 切片时不包含指定的第二个索引,故打印除了最后两个元素以外的其他元素
运行结果:
['charles', 'martina', 'michael'] ['martina', 'michael', 'florence'] ['charles', 'martina', 'michael', 'florence'] ['michael', 'florence', 'eli'] ['michael', 'florence', 'eli'] ['charles', 'martina', 'michael']
2. 遍历切片
for player in players[:3]: # 遍历前3个元素 print(player.title())
运行结果:
Charles
Martina
Michael
3. 复制列表
my_foods = ['pizza', 'falafel', 'carrot cake'] # 定义列表 friend_foods = my_foods[:] # 复制列表 print('My favorite foods are:') print(my_foods) print("\nMy friend's favorite foods are:") print(friend_foods)
运行结果:
My favorite foods are: ['pizza', 'falafel', 'carrot cake'] My friend's favorite foods are: ['pizza', 'falafel', 'carrot cake']
为每个列表添加一个元素:
my_foods.append('cannoli') friend_foods.append('ice cream') print('My favorite foods are:') print(my_foods) print("\nMy friend's favorite foods are:") print(friend_foods)
运行结果:
My favorite foods are: ['pizza', 'falafel', 'carrot cake', 'cannoli'] My friend's favorite foods are: ['pizza', 'falafel', 'carrot cake', 'ice cream']
若将复制列表代码friend_foods = my_foods[:]用friend_foods = my_foods替代,运行上边添加元素代码会怎么呢?
My favorite foods are: ['pizza', 'falafel', 'carrot cake', 'cannoli', 'cannoli', 'ice cream'] My friend's favorite foods are: ['pizza', 'falafel', 'carrot cake', 'cannoli', 'cannoli', 'ice cream']
比较运行结果可知:代码friend_foods = my_foods只是将两个变量指向同一个列表;
代码friend_foods = my_foods[:]是完全复制了一个列表,得到两个独立的列表。
Note:复制列表时有么有方括号将会得到两种不同的结果。