列表对象month现在已经包含12个月的英文字符串,或许这些字符串显得过长,可以将月份变为缩写形式,这时需要对列表元素进行修改。
由于列表是可变的,修改列表元素最简单的方法是提取该元素并进行赋值操作,代码如下所示:
month=['January','Feburary','March','April','May','June','July','August','September','October','November','December']
print(month) #查看原始列表
month[0]='Jan' #将第一个元素改为缩写形式
print(month) #查看修改后的列表
前面方法的处理都是直接作用在列表对象上,而且会创建一些所谓的“副本”进行处理,下面将解释创建“副本”的理由。对于可变类型的数据结构,直接在对象上进行元素的增删改查等修改操作,处理结果将直接影响对象本身,代码如下所示:
change.py: a=[1,2,3,4] #变量名a指向列表对象[1,2,3,4] b=a #变量名b也指向列表对象[1,2,3,4] print(a) #查看修改前的列表a print(b) #查看修改前的列表b a.append(5) #列表尾端追加元素5 print(a) #查看修改后的列表 print(b) #通过变量名b查看列表
change.py展示了修改操作会直接作用在对象上,列表对象有a和b两个变量名,通过变量名a对列表对象进行修改,此时列表对象的内容发生改变,所以无论通过变量名a还是变量名b来查看列表对象,结果都是一样的·。如果不希望修改操作直接作用于列表对象本身,可以使用列表的copy方法创建一个完全一样的“副本”,将修改操作作用在“副本”上,列表本身并不会发生变化。实质上,这个“副本”已经是另一个列表对象,只是内容与原列表对象完全相同而已。除了copy方法外,使用切片操作和list函数也能达到同样效果,代码如下所示:
copy.py:
a = [10,20,30,40,50] b = a.copy()#使用copy方法创建副本 c = a[:]#使用切片操作创建副本 d = list(a) #使用list函数创建副本 print(id(a),id(b),id(c),id(d)) #查看各变量对象id b[2] = 'three' #修改副本第三个元素 print(b)#查看修改后的变量对象 print(a) print(c) print(d)