元组
======================================基本使用======================================
1、用途:能够存储多个元素,每个元素之间用逗号隔开,元素可以是任意数据类型
2、定义方式:是在()内写, 虽然用途和列表一样,但是列表是[]
注意一下:如果只有一个元素的元组,那么这么写
t = (11,) 最后加个逗号 否则就不是元组了
name = ('xxx','ooo','qqq')
本质 name = tuple(('xxx','ooo','qqq))
3、常用操作+内置的方法
======================================该类型总结====================================
存一个值or存多个值
存多个值
有序or无序
有序
可变or不可变
不可变类型
常用操作和内河内置方法
1 按索引取值(正向取 和 反向取都行) 但是只能取
l = (1,2,3,4,'a','v',['q','w','e']) print(l[6]) # ['q', 'w', 'e'] # 如果元素中有可变类型那么元素也是可以改变的 l[6][2] = '就这么改' print(l) # (1, 2, 3, 4, 'a', 'v', ['q', 'w', '就这么改'])
2 切片(顾头不顾尾,步长)
l = (1,2,6,3,6,8,3) print(l[1:5:2]) # (2, 3) print(l[-1:-5:-2]) # (3, 6)
3 长度 len
l = ('a','s','g','f','y') print(len(l)) # 5
4 成员运算 in not in
l = [1,2,4,5,7,'a','asdas',[]] print([] in l) # True print(9 not in l) # True
5 循环
l = [1,1,1,1,1,2,4,5,7,'a','asdas',[]] for i in l: print(i)
补充:
print(l.count(1)) # 5 元素出现次数 print(l.index('a')) # 元素的索引 可以规定位置
字典
======================================基本使用======================================
1、用途:记录有描述性的数据 在{}内 可以存多组key:value键值对 key是对calue的描述 key通常情况下是字符串(这是之前字符串的说法) 这个key只能是不可变类型,value是任意类型的
2、定义方式:
dic = {'name':'james','age':'12'} 原理 dic = dict({'name':'james','age':'12'})
从来没试过的字典
d = {1:'2',2:'3',3:'4','name':'james',(5,):'试试能不能'} print(d) # {1: '2', 2: '3', 3: '4', 'name': 'james', (5,): '试试能不能'} 看来是可以的 print(type(d)) # <class 'dict'>
key重复的情况
d = {'age':12,'age':178,'age':19,'name':'james'} print(d) # {'age': 19, 'name': 'james'} 字典的key是不能重复的 key重复的话值输出最后一对key,value键值对 print(len(d)) # 2 在字典中如果key重复了 元素个数算一个
3、常用操作+内置的方法
======================================该类型总结====================================
存一个值or存多个值
存多个值
有序or无序
无序
可变or不可变
可变类型
常用操作+内置方法
1 按照key存取值:能存能取 也可以改
dic = {'name':'james','age':22,'hobby':'python'} print(id(dic)) # 5955656 print(id(dic)) print(dic['name']) # james 根据key取值 res = dic['age'] = 18 print(res,dic) # 18 {'name': 'james', 'age': 18, 'hobby': 'python'} age改变了 res = (dic['qq']) = 850446614 print(res,dic) # 850446614 {'name': 'james', 'age': 22, 'hobby': 'python', 'qq': 850446614} #当字典里面出现一个没有的key值时,会自动将这个键值对加在末尾 print(id(dic)) # 5955656 而且发现id没改变 说明是可变类型
2 长度 len
dic = {"name":"james","age":"22","phone":"11111"} print(len(dic)) # 3 统计的是键值对的数量
3 成员运算 in not in 对于字典来说只能判断key值
dic = {"name":"james","age":"22","phone":"11111"} print('james' in dic) # False False是因为在字典中只会将key暴露给我们 value 是不会暴露出来的 print('name' in dic) # True 所以这个key就可以搜到
4 删除
dic = {"name":"james","age":"22","phone":"11111"} del dic['phone'] print(dic) # {'name': 'james', 'age': '22'} 直接删除 res = dic.pop('name') print(res) # james pop 弹出的是value值 # 这个会报错 print(dic['phone']) # 报错 因为原字典中没有phone这个键,所以当键不存在直接报错 # # dic.clear() print(dic) # {} 返回了一空字典 用clean时候 clean提示不接受任何参数 # 所以clean一般是直接删除字典内所有键值对
5 定义字典的三种方式
(******) # dic = {'name':'james','age':22} print(dic) # 传参数式方法 d = dict(name='james',age=22) print(d,type(d)) # (*) l = [ ['name','james'], ['age',18], ['qq',854125442] ] dic = {} for i in l: dic[i[0]] = i[1] print(dic) # l = [ ['name','james'], ['age',18], ['qq',854125442] ] dic = {} for k,v in l: dic[k] = v print(dic)
6 键keys(),值values(),键值对items()
dic = {'name':'james','age':22} print(dic.keys()) # dict_keys(['name', 'age']) 还是前面说的老母猪 要就下崽 不要就告诉你 我这里有啥 for k in dic.keys(): print(k) # 输出了dic 字典中的两个key 这就是猪下崽的办法 # dic = {'name':'james','age':22} print(dic.values()) # dict_values(['james', 22]) 同上 只不过这里是输出value for v in dic.values(): print(v) # 让猪下崽 # dic = {'name':'james','age':22} print(dic.items()) # dict_items([('name', 'james'), ('age', 22)]) 同上 这里是键值对 for k,v in dic.items(): dic[k] = v print(k,v) # age 22 让猪下崽 # # get()根据key获取value (******************************) 这相当重要 dic = {'name':'james','age':22} print(dic["name"]) # james print(dic["age"]) # 22 print(dic.get('name','你给我的name在字典的key中')) # 在的话返回value值 res = dic.get('phone') print(res) # None 很明显字典中没有phone这个键 这就是get 的好处 不报错 返回None 但是也告诉你的查询的key不在字典的key中 # # dic = {'name':'james','age':22} res = dic.get('phone','又没有小姐姐,发出来干吗!!!') print(res) # 又没有小姐姐,发出来干吗!!! # get 还可以传值,如果查询的key在原字典中没有的话 那么他会返回你写好的参数 不写的话返回None # 写了就返回你写的内容 没写就返回None # dict.fromkeys() 快速创建字典 dic = ['name','age','pwd','phone'] print(dict.fromkeys(dic,123)) # {'name': 123, 'age': 123, 'pwd': 123, 'phone': 123} # 快速创建字典 但是每个key的value 都是同样的 # dict.popitem() dic = {'name':'james','age':22,'pwd':'123qwe','phone':12306} print(dic.popitem()) # ('phone', 12306) 默认将最后一组键值对弹出 先进后出 # dict.setdefault() dic = {'name':'james','age':22,'pwd':'123qwe','phone':12306} print(dic.setdefault('name','kobe')) # james 当key存在的时候 不修改原值 ,返回原值给你 print(dic.setdefault('vx','asd00000')) # 查询的不再字典中时候,会增加一个新的键值对,返回新增的键值对 print(dic) # {'name': 'james', 'age': 22, 'pwd': '123qwe', 'phone': 12306, 'vx': 'asd00000'} # dict.update() dic = {'name':'james','age':22} dic1 = {'QQ':'1598741','vx':'asd00000'} dic.update(dic1) print(dic) # {'name': 'james', 'age': 22, 'QQ': '1598741', 'vx': 'asd00000'} 两个字典的合并 dic["QQ"] = 6545646546 # 修改key相对应的value值 print(dic) dic.update(QQ=6554654654654) print(dic) # 也是修改key对应的value值
7 循环
dic = {'name':'james','age':22,'pwd':'123qwe','phone':12306} for i in dic: print(i)
集合
集合 作用 去重,关系运算 s = {1,2,3,4,5,6} # <class 'set'> 原理 s = set print(type(s)) # s = set() print(type(s)) # <class 'set'> 定义空集合只能用好、关键字set # x = {} print(type(x)) # <class 'dict'> 仅仅写了一个大括号的哈 python默认他是一个字典 # t = () print(type(t)) # <class 'tuple'> 元组类型 # 定义集合 集合 可以包含多个元素,用逗号分隔 集合的元素遵循的三个元素 可变类型:不可hash 不可变类型:可以hash # 没有重复的元素 s = {1,2,2,2,2,3,3,3,4,4,4,4,4,5} print(s) # {1, 2, 3, 4, 5} 集合自动去重 # 集合是无序的 s = {1,2,3,4,5,6} print(s) # {1, 2, 3, 4, 5, 6} 虽然看着升序 但是记住集合时无序的 # # 注意:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算的,不用纠结集合中单个的值 # 优先掌握的操作 1 长度 len s = {1,2,3,} print(len(s)) # 3 # 2 成员运算 in not in s = {1,2,3,4,5,6.234} print('a' in s) # Falss print(4 in s) # True # |合集 &交集 -差集 ^对称差集 >>=父级 <<=子集 s1 = {1,2,3,4,5,6,7,8,9} s2 = {2,4,6,8} print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7, 8, 9} 合集所有的加在一起 print(s1 & s2) # {8, 2, 4, 6} 交集两边共有的 print(s1 - s2) # {1, 3, 5, 7, 9} 1有2没有的 print(s1 ^ s2) # {1, 3, 5, 7, 9} 对称差集 两边没有共同的 print(s1 >= s2) # True 父集 1有的是不是2都有 是返回Ture print(s1 <= s2) # False 子集 1有的是不是2都有 不是返回False # s = {1,2,3,4,5} print(s.add(666)) print(s.add((1,2,3,4))) # s = {1,2,3,4,5} print(s.add(5)) # None print(s) # 添加元素 原来有就不加 没有的话加在末尾 a = {1,2,3,4,5} print(a.add((1,2,3,4))) #None # 将容器类型当成一个元素传入 print(a) b = {1,2,3,4,5} print(b.remove(888888)) # 删除元素为1 的那个元素 没有的话会报错 print(b) v = {1,2,3,4,5} print(v.discard(88888)) # 删除一个不存在的元素 不会报错 会返回原集合 print(v)