Python学习易错点-列表

来源:互联网 发布:脉脉职场 知乎 编辑:程序博客网 时间:2024/06/18 10:45

更改一个列表有许多方法

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]
原创粉丝点击