4.4.3复制列表
昨天写的主持人的例子,朋友看了,说我举的例子很low,我也挺无辜的,这不是为了原创吗?链接太多或者跟书上的内容太类似,就没意思了,还不如直接把书的链接给大家看。(好吧,其实我也是在变相吐槽一下简书的锁定机制)。
土就土吧,继续上例子。我和我朋友都喜欢看星爷的电影,我们喜欢的配角有相同的,也有不同的,为了展示这一点,可以用复制列表的功能。
要复制列表,就要先创建一个包含整个列表的切片,方法是同时活力起始索引和终止索引([ : ]),这样就会让Python创建一个起始于第一个元素,终止于最后一个元素的切片,也就达到复制整个列表的效果。
准备好了吗?我要上例子了。
supporting_role=['常威','石榴姐','重案组之虎','大军']
friend_role=supporting_role[:]
print("我喜欢的星爷电影配角是:")
print(supporting_role)
print("\n我朋友喜欢的星爷电影配角是:")
print(friend_role)
但在聊起其他女性配角时,我们有了一些不同的见解,于是我们的列表就不完全一致了。
supporting_role=['常威','石榴姐','重案组之虎','大军']
friend_role=supporting_role[:]
supporting_role.append('包租婆')
friend_role.append('春十三娘')
print("我喜欢的星爷电影配角是:")
print(supporting_role)
print("\n我朋友喜欢的星爷电影配角是:")
print(friend_role)
-
有意思的是,既然是复制列表,能不能直接A=B呢?答案是不行的。
图中红色圈住的,是[:],忽略超始和终止索引这一步是不能少的。
这里的主要问题,是直接将supporting_role直接赋值给friend_role,这种语法实际上就是使Python将新变量friend_role与旧变量supporting_role关联起来了,这种情况下,这两个亦是指向的都是同一个列表,所以在后面将“包租婆”和“春十三娘”都被添加到了supporting_role列表里,我表示我老婆在旁边看着我压力大,朋友表示,他老婆也在旁边,他看到这个结果也是瑟瑟发抖。(因为朋友他老婆长得像春十三娘,我老婆说她想当包租婆,所以,你们懂的。)
所以,复制列表时请一定要记得加上[:]啊~啊~啊~
好的,今天先写到这,改天再继续。