您的位置:首页 > 编程语言 > Python开发

python的list,tuple,dist,set和不可变对象

2016-05-18 17:07 761 查看
首先,list用[],tuple用(),dist用{},set用的是set()。先写这个,然后再说别的

list是有序的集合,可随时增删元素。简单语法如下:

>>> classmate=["mick","Bob","Jack"]
#元素下标从0开始,倒着是-1、-2、-3。。。
>>> classmate[0]
'mick'
>>> classmate[-1]
'Jack'
#追加元素到末尾或指定下标位置
>>> classmate.append("Adam")
>>> classmate.insert(1,'Tom')
>>> classmate
["mick","Tom","Bob","Jack","Adam"]
#删除指定下标元素
>>> classmate.pop(3)
'Jack'
>>> classmate
['mick', 'Tom', 'Bob', 'Adam']
#不同的数据类型也可以
>>> L=["thx",123,True]
#list的元素可以是list
>>> p=[234,345]
>>> l=["Jack",p,True]
>>> l
['Jack', [234, 345], True]
>>> l[1][1]
345


tuple一经初始化就不能改变,没有append(),insert()等方法,由于不可变,所以更安全,能用tuple代替list的时候就用tuple。下面只写一个问题,tuple里面有list元素。要理解的是“指向不变”。t[1]指向一个list对象,这点不能变,需要指向同一个list对象,但是这个list对象本身不能改变

>>> t=(123,["x","y"],True)
>>> t[1][1]="a"
>>> t
(123, ['x', 'a'], True)
>>> t[1]=['d','e','f']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t[1]=66
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment


dict使用键-值存储,查找速度快,无论dict多大都不会影响查找速度,而list则越大越慢,但是dict的空间占用很大,list比较节约空间。dict是典型的以空间还时间

>>> score={"Mick":90,"Tom":70,"Jack":87}
>>> score['Mick']
90
>>> score['Mick']=80
>>> score['Mick']
80
>>> 'Nimo' in score
False
>>> score.pop('Tom')
70
>>> score
{'Jack': 87, 'Mick': 80}
#这个判断dict中有没有那个关键字,若没有,返回后面的内容
>>> score.get("Tom",22222)
22222


set和dict类似,只是不存储value,不能有重复的key

>>> s=set([1,2,2,5,5,3])
>>> s
{1, 2, 3, 5}
>>> s.add(2)
>>> s
{1, 2, 3, 5}
>>> s.remove(2)
>>> s
{1, 3, 5}
>>> s2=set([2,3,5,6,7])
>>> s&s2
{3, 5}
>>> s|s2
{1, 2, 3, 5, 6, 7}


关于不可变对象,str,int都是,而list是可变的

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'




在set里的情况

>>> l=[1,2,3]
>>> s=set(l)
>>> s
{1, 2, 3}
>>> s=set([5,l])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: