在Python中元组与列表的区别就是,列表是可变类型而元组是不可变类型。不同的问题对序列的可变性有不同的要求,Python中同时存在元组和列表是必要的。并且元组和列表时可以相互转换的,这主要是因为list()和tuple()内建函数可以处理可迭代对象。顺便提一下,Python中的可变类型为列表和字典,不可变类型为数字,字符串和元组。
因为列表是可变类型,所以列表相对于元组多了一些操作。
Operation | Result | Notes |
---|---|---|
s[i]=x | item i of s is replaced byx | |
s[i:j]=t | slice of s fromi toj is replaced by the contents of the iterablet | (1) |
dels[i:j] | same as s[i:j] = [] | |
s[i:j:k]=t | the elements of s[i:j:k] are replaced by those of t | (2) |
dels[i:j:k] | removes the elements of s[i:j:k] from the list | |
s.append(x) | same as s[len(s):len(s)] = [x] | (3) |
s.extend(x) | same as s[len(s):len(s)] = x | (4) |
s.count(x) | 返回序列中x的个数,该操作元组也有 | |
s.index(x[,i[,j]]) | return smallest k such thats[k]==x andi<=k<j | (5) |
s.insert(i,x) | same as s[i:i] = [x] | |
s.pop([i]) | same as x = s[i];dels[i];returnx | (6) |
s.remove(x) | same as del s[s.index(x)] | |
s.reverse() | reverses the items of s in place | |
s.sort([func[,key[,reverse]]]) | sort the items of s in place | (7) |
Notes:
1.t 必须可迭代
2.t 与被替代部分的长度必须相等
3.在列表末尾添加元素,无论元素类型,当做单个元素来处理。
4.在列表末尾延长列表,x必须可迭代。append与extend的区别如下程序所示:
>>> a=[1,2,3,4]
>>> a
[1, 2, 3, 4]
>>> a.append([5,6,7])
>>> a
[1, 2, 3, 4, [5, 6, 7]]
>>> a.remove(a[-1])
>>> a
[1, 2, 3, 4]
>>> a.extend((5,6,7))
>>> a
[1, 2, 3, 4, 5, 6, 7]
>>> a.extend("567")
>>> a
[1, 2, 3, 4, 5, 6, 7, '5', '6', '7']
5.当x不在list中时引发ValueError异常。i,j为可选参数,表示起始与结束位置。
6.只有对列和数组有pop操作,i的默认值是-1,也就是说默认情况下弹出最后一个元素。
7.以指定的方式排序列表中额成员,如果func和key参数指定,则按照指定的方式比较各个元素,如果reverse标志设置为Ture,则列表以反序排列。
一般不该变对象的操作(比如查找类型的),元组和列表是都有的。列举如下:
cmp(),len(),max(),min(),repr(),str(),type(),in,not in,[ ], [: ],* ,+ .