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

首先,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 "", line 1, in 
TypeError: 'tuple' object does not support item assignment
>>> t[1]=66
Traceback (most recent call last):
  File "", line 1, in 
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'

python的list,tuple,dist,set和不可变对象_第1张图片
在set里的情况

>>> l=[1,2,3]
>>> s=set(l)
>>> s
{1, 2, 3}
>>> s=set([5,l])
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'list'

你可能感兴趣的:(python)