DAY06-Python入门学习-元组、字典、集合类型
一、元组
一:基本使用: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、长度
t=(1,2,3,4,5) print(len(t))
4、成员运算in和not in
t=(1,2,3,4,5) print(1 in t)
5、循环
for item in ('a','b','c'):print(item)
需要掌握的操作
t=('a','b','c','a') print(t.count('a'))#计算元组中字符出现的次数 print(t.index('a',1,10))#在元组索引(1,10)中查找字符,有就返回索引,没有报错 print(t.index('xxx',1,10))
二:该类型总结
1 存多个值
2 有序
3 不可变
字典
不可变类型=》可hash类型
可变类型 =》不可以hash类型
一:基本使用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)l=['a','b'] l[0]='A' l[2]='c'
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()
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)
8 dic.get()
dic={'name':'egon','age':18,'sex':'male'} dic['xxx'] v=dic.get('name') print(v)v=dic.get('xxx')#不存在返回None print(v)
需要掌握的操作
dic.fromkeys()的用法:
l=['name','age','sex'] dic={} dic=dic.fromkeys(l,None)#以列表L中的值作为Key,None为每个Key的Value print(dic)#{'name': None, 'age': None, 'sex': None}
dic.update()的用法:
old_dic={'name':'egon','age':18,'sex':'male'} new_dic={'name':'EGON','x':1,'y':2} old_dic.update(new_dic)#更新 print(old_dic)#{'name': 'EGON', 'age': 18, 'sex': 'male', 'x': 1, 'y': 2}
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)
二:该类型总结
1 存多个值
2 无序
3 可变
dic={'x':1} print(id(dic))#2515662048064 dic['x']=2 print(id(dic))#2515662048064
练习1:
nums=[11,22,33,44,55,66,77,88,99,90] dic={ 'k1':[], 'k2':[] } for num in nums:if num > 66:dic['k1'].append(num)else:dic['k2'].append(num) print(dic) #{'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55, 66]}
练习2:
s='hello alex alex say hello sb sb' words=s.split() dic={} print(words)#['hello', 'alex', 'alex', 'say', 'hello', 'sb', 'sb'] for word in words:if word in dic:dic[word]+=1else:dic[word]=1 print(dic)#{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2} s='hello alex alex say hello sb sb' words=s.split() dic={} for word in words: #word="hello"dic.setdefault(word,words.count(word)) #{'hello':2,"alex":2,"say":1,} print(dic)#{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
集合
一:基本使用:set
1 用途:
关系运算,去重
2 定义方式:
在{}内用逗号分开个的多个值
集合的三大特性:
1 每一个值都必须是不可变类型
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]]))#报错,集合是不可hash
3 常用操作+内置的方法
pythons={'李二丫','张金蛋','李银弹','赵铜蛋','张锡蛋','alex','oldboy'} linuxs={'lxx','egon','张金蛋','张锡蛋','alex','陈独秀'}
取及报名python课程又报名linux课程的学员:交集
print(pythons & linuxs)#{'张锡蛋', 'alex', '张金蛋'} print(pythons.intersection(linuxs))#{'张锡蛋', 'alex', '张金蛋'}
取所有报名老男孩课程的学员:并集
print(pythons | linuxs)#{'陈独秀', 'oldboy', '赵铜蛋', 'egon', '张金蛋', 'alex', '张锡蛋', '李二丫', '李银弹', 'lxx'} print(pythons.union(linuxs))#{'陈独秀', 'oldboy', '赵铜蛋', 'egon', '张金蛋', 'alex', '张锡蛋', '李二丫', '李银弹', 'lxx'}
取只报名python课程的学员: 差集
print(pythons - linuxs)#{'李银弹', 'oldboy', '赵铜蛋', '李二丫'} print(pythons.difference(linuxs))#{'李银弹', 'oldboy', '赵铜蛋', '李二丫'}
取只报名linux课程的学员: 差集
print(linuxs - pythons)#{'lxx', '陈独秀', 'egon'} print(linuxs.difference(pythons))#{'lxx', '陈独秀', 'egon'}
取没有同时报名两门课程的学员:对称差集/交叉补集
print(pythons ^ linuxs)#{'赵铜蛋', '陈独秀', 'oldboy', 'lxx', '李银弹', '李二丫', 'egon'} print(pythons.symmetric_difference(linuxs))#{'赵铜蛋', '陈独秀', 'oldboy', 'lxx', '李银弹', '李二丫', 'egon'}
是否相等
s1={1,2,3} s2={3,1,2} print(s1 == s2)#True
父集:一个集合是包含另外一个集合
s1={1,2,3} s2={1,2} print(s1 >= s2)#True print(s1.issuperset(s2))#True s1={1,2,3} s2={1,2,4} print(s1 >= s2)#False
子集
s1={1,2,3} s2={1,2} print(s2 <= s1)#True print(s2.issubset(s1))#True
需要掌握操作
update
s1={1,2,3} s1.update({3,4,5}) print(s1)#{1,2,3,4,5}
pop
s1={1,2,3} res=s1.pop() print(res)#无序删除,并返回值 print(s1)
remove
s1={1,2,3} res=s1.remove(3) 单纯的删除,返回值为None print(s1)
add
s1={1,2,3} s1.add(4) print(s1)#{1,2,3,4}
difference_update
s1={1,2,3} s2={1,2} s1.difference_update(s2) #在s1中删除与s2重复的,并把剩下的返回给s1 print(s1)
discard
s1={1,2,3} res=s1.discard(3) #单纯的删除,返回值为None print(s1) print(res) s1.remove(444444) #删除的元素不存在则报错 s1.discard(444444) #删除的元素不存在不会报错
isdisjoint
s1={1,2,3} s2={1} print(s1.isdisjoint(s2)) #如果两个集合有交集则返回False s1={1,2,3} s2={4,5,6} print(s1.isdisjoint(s2)) #如果两个集合没有交集则返回True
二:该类型总结
1 存多个值
2 无序
3 set可变
s={1,2,3} print(id(s))#2286174155496 s.add(4) print(id(s))#2286174155496
集合去重
局限性
1、无法保证原数据类型的顺序
2、当某一个数据中包含的多个值全部为不可变的类型时才能用集合去重
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)
转载于:https://www.cnblogs.com/xvchengqi/p/9367923.html
DAY06-Python入门学习-元组、字典、集合类型相关推荐
- python入门——列表+元组+字典+集合
列表 列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 1.列表嵌套(相当于二维数组) a=["b",'c','d'] ...
- python中列表 元组 字典 集合的区别
参考文章:python中列表 元组 字典 集合的区别
- python初级6元组字典集合
1.元组简介 元组基本介绍 a=() print(type(a)) <class 'tuple'> 元组类型 ●元组表现形式tuple ●元组也可以通过索引取值 还要注意 print(a[ ...
- python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...
---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...
- Python学习第七课-元组字典集合
Python学习第七课-元组&字典&集合 一.元组 1.1元组简介 1.2元组的拆包 1.3字符串拆包 1.4列表的拆包 1.5拆包练习 二.字典的简介 2.1介绍 2.2操作 三.字 ...
- Python 字符串/列表/元组/字典之间的相互转换 - Python零基础入门教程
目录 一.字符串 str 与列表 list 1.字符串转列表 2.列表转字符串 二.字符串 str 与字典 dict 1.字符串转字典 2.字典转字符串 三.列表 list 与字典 dict 1.列表 ...
- SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理
SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...
- Python入门篇-高级数据类型集合(set)和字典(dict)
Python入门篇-高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集合(set) 1>.集合的特点 约定set 翻译为集合c ...
- python 列表、元组、集合、字典、循环遍历数据结构
python 列表.元组.集合.字典.数据结构的循环(整理自python文档) 列表-list-用方括号标注,逗号分隔的一组值 list 的 方法 对list添加.插入.删除.查找.排列.翻转 lis ...
- Python元组字典集合
元组&字典&集合 一.tuple元组 1.概述 和列表相似,本质上是一种有序的集合 元组和列表的不同之处: a.列表:[ ] 元组:( ) b.列表中的元素可以进行增加和删除操 ...
最新文章
- Unity3D Image 组件附入图片问题
- 推荐几个实用的Python“小伎俩”
- 获取存储过程返回值及代码中获取返回值
- 快速排序的实现--代码
- 元素(洛谷-P4570)
- (jdbc和cmd)sqlite数据迁入mysql(导入导出)
- HTML5基于flash实现播放RTMP协议视频
- 混响运行于CPU或者DSP时的部分指标对比
- Win8 64位 安装 Delphi5
- 附件文件超过了服务器的大小,Exchange 2010设置附件大小
- EasyStreamClient对接海康流媒体V4.X——SDK对接关键函数记录
- 某同学:1年经验和1本软考证书,很迷茫~
- 艾萨克·阿西莫夫《日暮》
- 为何大多数人还在学Java 目前Java好就业吗
- Beyond Compare4破解方法
- 通达信交易服务器修改,GitHub - sjj6love/TdxTradeServer: TongDaXin Tarde Server 通达信交易服务器...
- RabbitMQ提示ERROR: epmd error for host
- windows防火墙开端口失败
- 【网络】RPC通信之Apache Thrift
- [转贴]当杀毒软件无能为力时,手动杀毒也许是我的最后救命稻草!