《Python编程:从入门到实践(第二版)》自学笔记(三)

切片

之前接触的都是对列表中的单个元素进行操作,但有时也会对列表中的部分元素进行操作,此时有项技术专门这一块的应运,称作“切片”

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range( )一样,Python在到达第二个索引之前的元素后停止。要输出列表中的前三个元素,需要指定索引0和3,这将返回索引为0、1和2的元素。

1
2
3
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
输出:['charles', 'martina', 'michael']

假设不指定前索引位置,那么默认是从列表中的第0索引位开始,同样道理,不指定后索引位置,那么默认是从列表中的最后一个索引位结束

1
2
3
players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[:4])
输出:['charles', 'martina', 'michael', 'florence']
1
2
3
players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[2:])
输出:['michael', 'florence', 'eli']

在之前对列表中单一元素进行访问,可以使用负索引,在这里也同样适用,负索引返回离列表末尾相应距离的元素,因此可以输出列表末尾的任意切片

1
2
3
players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[-3:])
输出:['michael', 'florence', 'eli']

在前面操作访问列表中的单一元素时,接触到遍历这样的一个概念,同样的在这里也会涉及到,因为都是列表中的元素,只不过这里部分元素添加了索引位

1
2
3
4
5
6
7
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[:3]:
print(player.title())
输出:
Charles
Martina
Michael

与此同时,为方便快速创建相同列表,我们也常常复制现有的列表,在Python中,我们把复制后的新列表,称作为原列表的副本

1
2
3
4
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print(friend_foods)
输出:['pizza', 'falafel', 'carrot cake']

很多情况下,手忙脚乱,不注意细节时,会将原列表直接赋给新列表,此方法是不可行的,下面是一段错误的演示,请务必注意,是错误的,不可采取

1
2
3
4
5
6
7
8
9
10
11
my_foods = ['pizza', 'falafel', 'carrot cake']

# 以下是不可取的,不可取,不可取
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print(my_foods)
print(friend_foods)
输出:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

这里将my_foods赋给friend_foods,而不是将my_foods的副本赋给friend_foods。这种语法实际上是让Python将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表。有鉴于此,当我们将’cannoli’添加到my_foods中时,它也将出现在friend_foods中。同样,虽然’ice cream’好像只被加入到了friend_foods中,但它也将出现在这两个列表中。输出表明,两个列表是相同的,这并非我们想要的结果。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 Carrol Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信