更改一个列表有许多方法
1.对列表切片进行切片
如 t=[1,2,3,4] temp=t[1:3] 则temp=[2,3] 不包括下标为3的元素
如果切片操作符出现在左侧 可以直接更新列表中元素
如t[1:3]=[‘a’,’b’] 则t=[1,’a’,’b’,4]
切片操作会新建一个列表
若定义函数
def bad_deleted_head(l):
l=l[1:]
若调用该函数
bad_deleted_head(t)
列表并没有发生变化,即t=[1,2,3,4]
《像计算机科学家一样思考python》中使用此例并作以解释:切片操作会新建一个列表,而复制操作会让t引用指向这个新的列表,但这些操作对调用者没有影响。在函数的开始t和nums指向同一个列表。在函数最后nums指向一个新的列表,但t仍旧没有改变
书中也给出一个解决方案 即不修改原列表,返回一个新列表
def tail(l):
return l[1:]
需注意的地方是,在不使用函数,直接调用语句t=t[1:],切片成功,t更新为去掉原来首元素的列表
2.使用方法对列表进行更改
列表的方法大多是无返回值的,直接修改原列表。
使用append(x),可以在列表尾部添加新的元素x
使用extend(tt),可以对两个列表拼接 将传入的列表tt中的所有元素添加到原列表尾部
删除元素的列表方法比较多
1).使用pop(a),常数a是被删除元素的下标,若不提供下标则删除列表尾元素。该方法会返回被删除元素的值。
x=t.pop(1) #删除下标1的元素并返回该元素的值
y=t.pop() #删除列表尾元素并返回该元素的值
2)使用del 操作符,返回None,该操作符可以对列表切片从而删除多个元素
del t[1:3] #删除t列表下标范围[1,3)的元素
del t[0] #删除t列表下标为1的元素
3)使用remove(x),需已知被删除元素的值
t.remove(1) #删除t中值为1的元素
继续思考使用函数修改原列表的问题
若定义函数
def deleted_last(l)
l.pop()
使用函数deleted_last(t),传入的列表被更改,即t=[1,2,3]
3.使用+操作符和*操作符
t=[1,2,3]
t=t+[4,5] #更新t=[1,2,3,4,5]
t=t*2 #更新t=[1,2,3,4,5,1,2,3,4,5]