list的extend()与append()的使用和区别 Python

1.list中的 append():

接受一个参数,这个参数可以是任何数据类型,其实都是一个对象的引用,并且因为是引用,所以都是作为一个整体简单地追加到 biglist 的尾部,所以当这个参数本身是一个list时,追加进去的是这整个list(实际操作是向biglist尾部加入了这个list的引用地址),所以当这个list内部的元素变化时,biglist中的值也在变化

biglist=['a',9]
slist=[[0, 2], [2, 3], [1, 5]]
biglist.append(slist)
print biglist
# 按位置0的元素正序排序
slist.sort(key=operator.itemgetter(0), reverse=True)
print biglist
运行结果:

['a', 9, [[0, 2], [2, 3], [1, 5]]]
['a', 9,
[[2, 3], [1, 5], [0, 2]]]

所以,在对slist 进行append()操作之后,如果还需对slist进行值得改变,就需要先在append()之前就将slist的值全部拿出来给另外一个newlist,然后将newlist追加到biglist中

biglist = ['a',9]
slist = [[0, 2], [2, 3], [1, 5]]
newlist = slist[:]
biglist.append(newlist)
print biglist
# 按位置0的元素正序排序
slist.sort(key=operator.itemgetter(0), reverse=True)
print biglist
运行结果:
['a', 9, [[0, 2], [2, 3], [1, 5]]]
['a', 9, [[0, 2], [2, 3], [1, 5]]]

2.list中的extend():

和 append 看起来类似,但实际上完全不同。extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素都添加到biglist 中,加入的并不是引用,所以list中的元素变化时,biglist的值并不变

biglist=['a',9]
slist=[[0, 2], [2, 3], [1, 5]]
biglist.extend(slist)
print biglist
# 按位置0的元素正序排序
slist.sort(key=operator.itemgetter(0), reverse=True)
print biglist
运行结果:

['a', 9, [0, 2], [2, 3], [1, 5]]
['a', 9, [0, 2], [2, 3], [1, 5]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值