python中list,tuple,dict,set总结

list(目录):

内容可变,可重复,例如:

>>> a=['wen','wen']
>>> a
['wen', 'wen']

可以通过a[0]访问,可使用append,pop,insert操作。

tuple(元组):

内容不可变,可重复,例如:

>>> c=(1,1,2)
>>> c
(1, 1, 2)

当元组元素只有一个的时候,需要这样赋值:

>>> t=(1,)
>>> t
(1,)

“可变”元组:

>>> p=(1,a)
>>> p
(1, ['wen', 'wen'])
>>> a[1]='love'
>>> p
(1, ['wen', 'love'])

元组实际并不改变,p(1)只是指向a而不对a的内容操作,而a作为list是可变的,所以元组看起来是“可变”的

可通过p[0]访问。

dict(字典):
(key-value)赋值模式,不可重复,重复的内容会替换前面相同的内容,例如:

>>> a={'wen':1,'wen':2}
>>> a
{'wen': 2}
>>> len(a)
1

读取内容:

>>> d={'wen':1}
>>> d
{'wen': 1}
>>> d['wen']
1

元组可以作为dict的key(其内容不可变),重新赋值key的value会冲掉旧的value:

>>> d={'wen':1,c:2}
>>> d
{'wen': 1, (1, 1, 2): 2}
>>> d[c]
2
>>> d['wen']=4
>>> d
{'wen': 4, (1, 1, 2): 2}

此时如果将c从一个tuple变成一个list,结果会是怎样呢?

>>> c=['wen']
>>> d
{'wen': 4, (1, 1, 2): 2}
>>> c
['wen']

可以看出d={‘wen':1,c:2}的语句中,d指向c,而且复制了c的内容储存到自身,但当c的内容改变时,虽然c的内容在自身,但无法指向c,导致访问不了d[c]

>>> d[c]
Traceback (most recent call last):
  File "<pyshell#128>", line 1, in <module>
    d[c]
TypeError: unhashable type: 'list'

可以直接访问对元组或对元组的value进行操作:

>>> d[(1,1,2)]
2

所以dict的key仍是不可重复,不可变的。

判断是否存在某个key:

一种通过in

>>> '3' in d
False

或者用get(),如果key不存在,可以返回None(在python的交互环境不显示结果),或者自己指定的value:

>>> d.get('3')
>>> d.get('3', -1)
-1

  

也可以不输入value(但此时就没有用dict的意义,不如用下文的set):

赋值:

>>> b={'wen'}
>>> b
{'wen'}

不会重复:

>>> b={'wen','wen'}
>>> b
{'wen'}

元组一样可以作为key:

>>> a=(1,1,2)
>>> b={'wen',a}
>>> b
{'wen', (1, 1, 2)}

通过d[key]访问,用d.pop(key)删除key和对应的value。

set,一组key的集合,无重复,只有一组参数:

赋值:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
>>> s = set([1, 1, 3])
>>> s
{1, 3}
>>> s = set([1, 2, 3],[2,3,4])
Traceback (most recent call last):
  File "<pyshell#188>", line 1, in <module>
    s = set([1, 2, 3],[2,3,4])
TypeError: set expected at most 1 arguments, got 2

很明显当参数为2的时候,程序会报错,set实际就是一组无序,无重复的集合。(注意,是无序,输出的只是元素的顺序)

set还可以用于做交集或并集,详情见链接:https://www.cnblogs.com/xikl/p/12014317.html

通过add(key)可以添加元素(元组也可以添加),remove(key)可以删除元素

>>> c
(1, 2, 3)
>>> s.add(c)
>>> s
{1, 3, (1, 2, 3)}
>>> s.remove(c)
>>> s
{1, 3}

猜你喜欢

转载自www.cnblogs.com/xikl/p/12014421.html