一.元组(tuple ,存多个值,有序,不可变)
与列表类似可以存多个值,但是不同的是元组本身不能被修改
基本使用:tuple
1.用途:记录多个值,当多个之没有改的需求,此时用元组
2. 定义方式:在()内用逗号分割开多个任意类型的值
t=(1,1.3,'xx',('a','b'),[1,2]) #t=tuple((1,1.3,'xx',('a','b'),[1,2])) print(t,type(t)) t1=tuple('hello') print(t1)
3.常用操作+内置方法
1、按索引取值(正向取+反向取):只能取
t=('egon',123,['a','b']) print(id(t[0])) print(id(t[1])) print(id(t[2])) t[2][0]='A' print('='*50) print(id(t[0])) print(id(t[1])) print(id(t[2])) t[0]='EGON' t[2]='xxxx' t[2][0]='A' print(t)
2.切片(顾头不顾尾,步长)
t=(1,2,3,4,5) print(t[0:3]) print(t)
3、长度
len()
4.成员运算(in ,not in)
5.循环
for item in ('a','b','c'): print(item)
需要了解的操作
t=('a','b','c','a') print(t.count('a')) print(t.index('a',1,10)) print(t.index('xxx',1,10))
二.字典(dict 存多个值,无序,可变)
基本使用dict
1.用途:记录多个值,每一个值都对应的key用来描述value的作用
2.定义方式:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型
dic={0:'aaa',1:'bbb',2:'cccc'} # dic=dict({0:'aaa',1:'bbb',2:'cccc'})
print(dic,type(dic))
print(dic[0])
dic={[1,2]:'aaa'}
dic={(1,2):'aaa'}
print(dic[(1,2)])
字典的两种用法
# 用法一: dic=dict(x=1,y=2,z=3) print(dic) # 用法二: userinfo=[ ['name','egon'], ['age',18], ['sex','male'] ] d={} for k,v in userinfo: # k,v=['name', 'egon'] # print(k,v) d[k]=v print(d) # d=dict(userinfo) # print(d)
3.常用操作+内置方法
1、按key存取值:可存可取
dic={'name':'egon'}
print(dic['name'])
dic['name']='EGON'
print(dic)
dic['age']=18
print(dic)
2、长度len
dic={'name':'egon','age':18,'name':'EGON','name':'XXXX'}
print(dic)
print(len(dic))
3、成员运算in和not in:字典的成员运算判断的是key
dic={'name':'egon','age':18,}
print(18 in dic)
print('age' in dic)
4、删除
dic={'name':'egon','age':18,}
# 通用
del dic['name']
print(dic)
del dic['xxx'] ##key不存在则报错
res=dic.pop('age') #删除key对应的value,并返回value
print(dic)
print(res) #
dic.pop('xxx') #key不存在则报错
res=dic.popitem()
print(dic)
print(res
5、键keys(),值values(),键值对items() 注意python2与python3之间的区别
dic={'name':'egon','age':18,}
print(dic.keys())
l=[]
for k in dic.keys():
l.append(k)
print(l)
print(list(dic.keys()))
print(dic.values())
print(list(dic.values()))
print(dic.items())
print(list(dic.items()))
6、循环
dic={'name':'egon','age':18,'sex':'male'}
for k in dic.keys():
print(k,dic[k])
for k in dic:
print(k,dic[k])
for v in dic.values():
print(v)
for k,v in dic.items():
print(k,v)
需要掌握的操作
# dic.get() dic={'name':'egon','age':18,'sex':'male'} dic['xxx'] v=dic.get('name') print(v) v=dic.get('xxx') print(v)
#dic.fromkeys()的用法: l=['name','age','sex'] dic={'name':None,'age':None,'sex':None} dic={} for k in l: dic[k]=None print(dic) dic=dic.fromkeys(l,None) print(dic)
old_dic={'name':'egon','age':18,'sex':'male'}
new_dic={'name':'EGON','x':1,'y':2}
old_dic.update(new_dic)
print(old_dic)
# setdefault:有则不动/返回原值,无则添加/返回新值 dic={'name':'egon','age':18} res=dic.setdefault('name','EGON') # 字典中已经存在key则不修改,返回已经存在的key对应的value print(dic) print(res) res=dic.setdefault('sex','male') # 字典不存在key则添加"sex":"male",返回新的value print(dic) print(res)
三.集合(set 存多个值,无序,set可变)
基本使用:set
1.用途: 关系运算,去重
2.定义方式: 在{}内用逗号分开个的多个值
集合的三大特性:
2.1 每一个值都必须是不可变类型
2.2 元素不能重复
2.3 集合内元素无序
s={1,3.1,'aa',(1,23),} # s=set({1,3.1,'aa',(1,23),})
print(s,type(s))
s={1,1,1,1,1,1,1,1,1,2,3}
print(s)
s={'a','b','c'}
s[0]
s=set('hello')
print(s)
print(set(['a','b','c',[1,2]]))
3.常用操作+内置方法
pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'}
linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'}
# 取及报名python课程又报名linux课程的学员:交集
print(pythons & linuxs)
print(pythons.intersection(linuxs))
# 取所有报名老男孩课程的学员:并集
print(pythons | linuxs)
print(pythons.union(linuxs))
# 取只报名python课程的学员: 差集
print(pythons - linuxs)
print(pythons.difference(linuxs))
# 取只报名linux课程的学员: 差集
print(linuxs - pythons)
print(linuxs.difference(pythons))
# 取没有同时报名两门课程的学员:对称差集
print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs))
# 是否相等
s1={1,2,3}
s2={3,1,2}
print(s1 == s2)
# 父集:一个集合是包含另外一个集合
s1={1,2,3}
s2={1,2}
print(s1 >= s2)
print(s1.issuperset(s2))
s1={1,2,3}
s2={1,2,4}
print(s1 >= s2)
# 子集
s1={1,2,3}
s2={1,2}
print(s2 <= s1)
print(s2.issubset(s1))
需要掌握的操作
s1={1,2,3}
s1.update({3,4,5})
print(s1)
s1={1,2,3}
res=s1.pop()
print(res)
s1={1,2,3}
res=s1.remove(3) #单纯的删除,返回值为None
print(s1)
s1={1,2,3}
s1.add(4)
print(s1)
s1={1,2,3}
s2={1,2}
s1.difference_update(s2) #s1=s1.difference(s2)
print(s1)
s1={1,2,3}
res=s1.discard(3) ##单纯的删除,返回值为None
print(s1)
print(res)
s1.remove(444444) #删除的元素不存在则报错
s1.discard(444444) #删除的元素不存在不会报错
s1={1,2,3}
s2={1,2,4}
print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True
s1={1,2,3}
s2={4,5,6}
print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True
集合去重:
names=['alex','egon','alex','alex','egon','lxx'] s=set(names) print(s) l=list(s) print(l) stus_info=[ {'name':'egon','age':18}, {'name':'alex','age':73}, {'name':'oldboy','age':84}, {'name': 'egon', 'age': 18}, {'name': 'egon', 'age': 18}, {'name': 'egon', 'age': 18}, {'name': 'oldboy', 'age': 84}, ] # set(stus_info) # 报错 l=[] for info in stus_info: if info not in l: l.append(info) # print(l) stus_info=l print(stus_info)