16元组 的一些方法 可以存放多种类型 不可变类型 int float 字符串 字典 列表
t=(1,3.1,'aaa',(1,2,3),['a','b'],{'c':'d'}) # t=tuple(...)
# print(type(t))
1 #1、按索引取值(正向取+反向取):只能取 不能进行更改
# t=('a','b',1)
# t[0]=111
#2、切片(顾头不顾尾,步长)
# t=('h','e','l','l','o')
# res=t[1:3]
# print(res)
# print(t)
#3、长度
# t=('h','e','l','l','o')
# print(len(t))
#4、成员运算in和not in
# t=('h','e','l','l','o')
# print('h' in t)
#5、循环
# t=('h','e','l','l','o')
# for item in t:
# print(item)
#6 # 掌握的方法
t=('a','b','a')
# print(t.index('a'))#查找值的索引
# t.index('xxx')
print(t.count('a'))#查找值的数量
17 字典的一些方法
key存在则修改
key不存在则新增
# 2、定义方式: 在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来
# 描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(int\float\str\tuple)
d={0:'x',1.3:'y','k1':'z',(1,2,3):'aaa'} # d=dict(....)
# print(d[(1, 2, 3)])#取value
# d1={[1,2,3]:'aaaaa'}#列表不能变 ,可变类型
# d=dict([('k1',1),('k2',2),('k3',3)])
# print(d)
# l=[('k1',1),('k2',2),('k3',3)]
# d={}
# for t in l: #t=('k1',1) #其他的方式实现变成字典
# k,v=t
# # print(k,v)
# d[k]=v
# print(d)
# #
# d=dict(l)
# print(d)
# 3、常用操作+内置的方法
#优先掌握的操作:
#1、按key存取值:可存可取
d={'x':1}
# print(d['x'])
# print(id(d))
# d['x']=1111
# print(d)
# print(id(d))
# d['y']=2222
# print(d)
#2、长度len
# d={'x':1,'y':2,'z':3}
# print(len(d))
#3、成员运算in和not in
# d={'x':1,'y':2,'z':3}
# print(1 in d)
# print('x ' in d)
#4、删除
d={'x':1,'y':2,'z':3}
# del d['y']
# print(d)
# res=d.pop('y')
# print(d)
# print(res)
# res=d.popitem()
# print(res)
#5、键keys(),值values(),键值对items()
# d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
# # print(d.keys())取出所有的key但是前面有dict_key
# print(list(d.keys()))#取出后直接是列表
#
# # print(d.values()) #取出所有的value
# print(list(d.values()))
# # print(d.items())取出所有的 key value
# print(list(d.items()))
#6、循环
# for k in d.keys():#循环取出k
# print(k)
# for k in d:
# print(k)
# for v in d.values():#循环取出value
# print(v)
# for k,v in d.items(): #k,v=('name', 'egon')#循环出去k,v
# print(k,v)
# ======================================该类型总结====================================
# r存多个值
# 无序
# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash
# 需要掌握的操作
# get方法
# d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
# v=d.get('namexxxxxxx')#取的值不在列表里会显示none
# print(v)
# v1=d['namexxxxxxxxxxx']#会报错
# print(v1)
#update方法
# d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
# d.update({'x':1,'name':"EGON"})#存在的值会进行更改,不存在的会进行添加
# print(d)
# fromkeys:需求是快速新造出一个字典,value的初始值全都为None,而key是来自于一个列表
# keys=['name','age','sex']
# # d={}
# # for k in keys:
# # d[k]=None
#
# d={}.fromkeys(keys,None)#快速创造出字典
# print(d)
# setdefault 没有添加值 用这个方法 取出这个值为none
d={"x":1,"y":2}
# 按照默认的操作形式
# d['x']=1111 # key存在则修改
# d['z']=1111 #key不存在则新增
# 按照setdefault的形式
# d={"x":1,"y":2}
# res=d.setdefault('x',11111) # 在key存在的情况下不修改值,会返回原值
# print(d)
# print(res)
# res=d.setdefault('z',11111) # 在key不存在的情况下会新增值,会返回新增的值
# print(d)
# print(res)
# 练习
s='hello alex alex say hello sb sb'
# d={'hello':2,'alex':2,'say':1,'sb':2}
d={}
words=s.split()
# print(words) #words=['hello', 'alex', 'alex', 'say', 'hello', 'sb', 'sb']
for word in words: #word= 'alex'
# d[word]=words.count(word) #d['alex']=words.count('alex')
d.setdefault(word,words.count(word))
#d={'hello':2,'alex':2}
# print(d)
#补充元组符号
# t=(1,)
# print(t,type(t))
name=input('>>: ').strip()
print(('my name is %s' %name).center(50,'*'))
18集合的一些使用方法 不能放列表
# pythons=['egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯']
# linuxs=['欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb']
# l=[]
#
# for stu in pythons:#复杂的使用方法来寻找有重复的地址
# if stu in linuxs:
# l.append(stu)
# print(l)
1. 什么是集合set 可变类型
在{}内用逗号分隔开多个值,集合的特点:
1. 每个值必须是不可变类型
2. 集合无序
3. 集合内元素不能重复
2. 为何要用集合
1. 用于做关系运算
2. 去重
3. 如何用集合
'''
# s={1,1.3,'aa',[1,2,]}
# s={1,1.3,'aa'}#不能放列表
# print(s)
# s={1,1,1,1,1,1,1,2} #s=set(....)
# print(type(s))
# print(s)
# d={'x':1,'x':2,'x':3}
# print(d)
# res=set('hello')
# res=set([1,2,['a','b']])
# print(res)
# 集合的第一大用途: 关系运算
pythons={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'}
linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'}
# 1 求同时报名两门课程的学生姓名:交集
# print(pythons & linuxs)
# print(pythons.intersection(linuxs))
# pythons=pythons & linuxs
# print(pythons) #{'李铜蛋', '艾里克斯'}
# pythons.intersection_update(linuxs) #pythons=pythons.intersection(linuxs)
# print(pythons) #{'艾里克斯', '李铜蛋'}
# 2 求报名老男孩学校课程的所有学生姓名:并集
# print(pythons | linuxs)
# print(pythons.union(linuxs))
# 3 求只报名python课程的学生姓名: 差集
# print(pythons - linuxs)
# print(pythons.difference(linuxs))
# print(linuxs - pythons) #求只报名linux课程的学生姓名
# print(linuxs.difference(pythons))
# 4 求没有同时报名两门课程的学生姓名: 对称差集
# print((pythons - linuxs) | (linuxs - pythons))
# print(pythons ^ linuxs)
# print(pythons.symmetric_difference(linuxs))
# 5 父子集:指的是一种包含与被包含的关系
# s1={1,2,3}
# s2={1,2}
# print(s1 >= s2)
# print(s1.issuperset(s2))
# print(s2.issubset(s1))
# 情况一:
# print(s1 > s2) #>号代表s1是包含s2的,称之为s1为s2的父集
# print(s2 < s1)
# 情况二:
# s1={1,2,3}
# s2={1,2,3}
# print(s1 == s2) #s1如果等于s2,也可以称为s1是s2的父集合
# 综上:
# s1 >= s2 就可以称为s1是s2的父集
# s3={1,2,3}
# s4={3,2,1}
# print(s3 == s4)
# s5={1,2,3}
# s6={1,2,3}
# print(s5 >= s6)
# print(s6 >= s5)
# 集合的第二大用途:去重
# 集合去重的局限性:
# 1. 会打乱原值的顺序
# 2. 只能针对不可变的值去重
# stus=['egon','lxx','lxx','alex','alex','yxx']
# new_l=list(set(stus))
# print(new_l)
#
# old_l=[1,[1,2],[1,2]]
# set(old_l)
l=[
{'name':'egon','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'egon','age':20,'sex':'female'},
{'name':'egon','age':18,'sex':'male'},
{'name':'egon','age':18,'sex':'male'},
]
# new_l=[]
# for dic in l:
# if dic not in new_l:
# new_l.append(dic)
# print(new_l)
# 需要掌握的操作:
s1={1,2,3}
# s1.update({3,4,5}) #对值进行更改取重加新的值
# print(s1)
# print(s1.pop())#随机去除
# print(s1)
# s1.remove(2)#删除值不存在的值会报错
# print(s1)
# s1={1,2,3}
# print(id(s1))
# s1.add(4)#添加值
# print(s1)
# print(id(s1))
# s1={1,2,3}
# s1.discard(4)#去除不存在的值不会报错
# s1.remove(4)
# print(s1)
# s1={1,2,3}
# s2={4,5}
# print(s1.isdisjoint(s2))#判断是否有交集有交集False 没交集True
#总结
# 存多个值
# 无序
# set可变