9、基础类型之列表、元组、字典
一、列表类型
1.1、定义:存储同种属性多个值
1.2、定义:l=[1,1.2,'a']
1.3、类型转换:
凡是能够被for循环遍历的类型都可以当做参数传给list()转换成列表:
res=list('hello') print(res) res=list({'k1':111,'k2':222,'k3':3333}) print(res)
1.4、内置方法 (重要)
1.4.1、按照索引存取值(正向存取+反向存取):既可以取也可以改
l=[111,'egon','hello'] 正向取 print(l[0]) 反向取 print(l[-1]) 可以取也可以改:索引存在则修改对应的值 l[0]=222 print(l)
无论是取值操作还是赋值操作:索引不存在则报错
l[3]=333
1.4.2、切片 [ ]
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd', [1, 2, 3]] print(l[0:5:2]) # 0 2 4 print(l[0:len(l)]) new_l=l[:] # 切片等同于拷贝行为,而且相当于浅copy
1.4.3、长度 len
print(len([1, 2, 3]))
1.4.4、成员运算in 和not in
print('aaa' in ['aaa', 1, 2]) print(1 in ['aaa', 1, 2])
1.4.5、往列表里面添加值
1.4.5.1、后面追加 append
l=[111,'egon','hello']
l.append(3333)
l.append(4444)
print(l)
1.4.5.2、按位置插入值 insert
l=[111,'egon','hello'] l.insert(0,'alex') print(l)
1.4.5.3、添加字符或者字符串 extend
new_l=[1,2,3] l=[111,'egon','hello'] l.extend(new_l)
l.extend('abc')
print(l)
1.4.6、删除
1.4.6.1、单纯的删除没有返回值 del
l = [111, 'egon', 'hello'] del l[1] x =del l[1] # 抛出异常,不支持赋值语法 print(l)
1.4.6.2、 根据索引删除,会返回删除的值 pop
l = [111, 'egon', 'hello'] l.pop() # 不指定索引默认删除最后一个 l.pop() print(l)
1.4.6.3、根据元素删除值,remove
l = [111, 'egon', [1,2,3],'hello'] l.remove([1,2,3]) print(l) res=l.remove('egon') print(res) # None
1.5、需要掌握的内置方法
1.5.1、计数 count
l = [1, 'aaa', 'bbb','aaa','aaa'] 1、l.count() print(l.count('aaa'))
1.5.2、寻找 找不到报错,找到回复1 index
l = [1, 'aaa', 'bbb','aaa','aaa'] print(l.index('aaa')) print(l.index('aaaaaaaaa')) # 找不到报错
1.5.3、清除 clear
l = [1, 'aaa', 'bbb','aaa','aaa'] l.clear() print(l)
1.5.4、顺序翻转 reverse
l = [1, 'egon','alex','lxx']l.reverse()print(l)
1.5.5、 升序和降序 (同种类型) sort
l=[11,-3,9,2,3.1] l.sort() # 默认从小到大排,称之为升序 l.sort(reverse=True) # 从大到小排,设置为降序 print(l)
1.5.6、队列,先进先出 FIFO
l=[] # 入队操作 l.append('first') l.append('second') l.append('third') print(l) # 出队操作 print(l.pop(0)) print(l.pop(0)) print(l.pop(0))
1.5.7、堆栈,后进先出 LIFO
l.append('first') l.append('second') l.append('third') print(l) # 出队操作 print(l.pop()) print(l.pop()) print(l.pop())
二、元组
2.1、定义
一个不可变的列表,是不可变类型。
2.2、作用
按照索引存放多个值,只能用来读写。
2.3、定义
在括号用逗号分隔多个任意属性的元素
t=(1,1.3,'aa') # t=tuple((1,1.3,'aa')) print(t,type(t))
2.4、类型转换
# print(tuple('hello')) # print(tuple([1,2,3])) # print(tuple({'a1':111,'a2':333}))
2.6、内置方法(重要)
2.6.1、按照索引取值,不能改
t=('aa','bbb','cc') print(t[0]) print(t[-1])
2.6.2、切片
t=('aa','bbb','cc','dd','eee')print(t[0:3])print(t[::-1])
2.6.3、长度 len
t=('aa','bbb','cc','dd','eee')print(len(t))
2.6.4、成员运算 in
print('aa' in t)
2.6.5、寻找 index
t=(2,3,111,111,111,111) print(t.index(111))
2.6.6、计数 count
t=(2,3,111,111,111,111) print(t.count(111))
三、字典
3.1、定义:在大括号内用逗号分隔多个key:value,key属于不可变类型,且不可重复,否则使用最后一个值,value是可变类型。
3.2、造字典
3.2.1、方法一 大括号里面带着key和value
d={'k1':111,(1,2,3):222} # d=dict(...) print(d['k1']) print(d[(1,2,3)]) print(type(d))
d={} # 默认定义出来的是空字典
print(d,type(d))
3.2.2、方法二 使用dict改变等号
d=dict(x=1,y=2,z=3) print(d,type(d))
3.2.3、方法三、通过特殊表达方式:两两对应的列表进行更改
info=[ ['name','egon'], ('age',18), ['gender','male'] res=dict(info) # 一行代码搞定上述for循环的工作 print(res)
3.2.4、快速初始化一个空字典{},往字典里面填key
keys=['name','age','gender'] d={}.fromkeys(keys,None) # 一行代码搞定上述for循环的工作 print(d)
3.3、内置方法(重要)
3.3.1、按照key存取值,可存可取
d={'k1':111} 针对赋值操作:key存在,则修改 d['k1']=222 针对赋值操作:key不存在,则创建新值 d['k2']=3333 print(d)
3.3.2、长度 len
d={'k1':111,'k2':2222,'k1':3333,'k1':4444} print(d) print(len(d))
3.3.3、运算符in和not in
d={'k1':111,'k2':2222} print('k1' in d) print(111 in d)
3.3.4、删除
3.3.4.1、通用删除 del
d={'k1':111,'k2':2222} del d['k1'] print(d)
3.3.4.2、根据key指定删除 pop 返回key对应的value
d={'k1':111,'k2':2222} res=d.pop('k2') print(d) print(res)
3.3.4.3、 随机删除 返回元组
res=d.popitem() print(d) print(res)
3.3.5、循环 for 关于items 需要对应key和value
d={'k1':111,'k2':2222} for k,v in d.items(): print(k,v)
3.3.6、需要掌握的内置方法
3.3.6.1、清除 clear
d={'k1':111} d.clear()
3.3.6.2、更新 update
d={'k1':111}
d.update({'k2':222,'k3':333,'k1':111111111111111})
print(d)
3.3.6.3、取值,没有不会报错,返回none,可以用来判断 get
d.get() #根据key取值,容错性好 print(d['k2']) # key不存在则报错
3.3.6.4、添加,有则不更改,返回原value
没有则添加,返回现value setdefault
info={'name':'egon'} res=info.setdefault('name','egon') print(info) print(res)