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]]