06-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]+=1
else:
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)

06-Python入门学习-元组、字典、集合类型的更多相关文章
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- **python中列表 元组 字典 集合
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...
- day_6深浅拷贝,元组字典集合类型定义和各种操作方法
首先我们来讲一下深浅拷贝 1:值拷贝,假设一个列表等于L1 再定义一个L2=L1 这样就是值拷贝 L2只是存的L1存列表的地址,所以当L1发生改变,L2也随之改变 2:浅拷贝,L2=L1.copy( ...
- python 深浅拷贝 元组 字典 集合操作
深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
Python的变量和数据类型 1 .python的变量是不须要事先定义数据类型的.能够动态的改变 2. Python其中一切皆对象,变量也是一个对象,有自己的属性和方法 我们能够通过 来查看变量的类型 ...
- python 中列表 元组 字典 集合的区别
先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...
- python的列表元组字典集合比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...
- python入门学习:5.字典
python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典 在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...
- python3笔记十八:python列表元组字典集合文件操作
一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle #数据持久性模块 #封装的方法def OptionData(data,path): # ...
- python入门学习:7.函数
python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数 使用关键字def ...
随机推荐
- 2019The Preliminary Contest for ICPC China Nanchang National Invitational
The Preliminary Contest for ICPC China Nanchang National Invitational 题目一览表 考察知识点 I. Max answer 单调栈+ ...
- python之OpenCv(四)---人脸识别
对特定图像进行识别,最关键的是要有识别对象的特征文件.OpenCV已经内置了人脸识别特征文件,我们只要使用OpenCV的CascadeClassifier类即可进行识别. 语法: https://gi ...
- jvisualvm安装visualgc插件
jdk1.7自带jvisualvm可以对java应用进行监控.其中有个插件visualgc可以查看jvm垃圾回收的具体信息.安装插件的步骤是打开jvisualvm,点击工具->插件,在可用插件列 ...
- 阿里巴巴图标库iconfont上传svg后,显示不了图片
AI里面选中图形,点对象-路径-轮廓化描边
- [再寄小读者之数学篇](2014-06-20 Beta 函数)
令 $\dps{B(m,n)=\sum_{k=0}^n C_n^k \cfrac{(-1)^k}{m+k+1}}$, $m,n\in\bbN^+$. (1) 证明 $B(m,n)=B(n,m)$; ( ...
- [再寄小读者之数学篇](2014-05-23 $\ln x-ax=0$ 有两个根时的估计)
已知函数 $f(x)=\ln x-ax$, 其中 $a$ 为常数. 如果 $f(x)$ 有两个零点 $x_1,x_2$. 试证: $x_1x_2>e^2$. 证明: 由 $$\bex \ln x ...
- js实现可输入的下拉框
<HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> ...
- 2.11 while循环的嵌套以及应用(难)
while循环嵌套 前面学习过if的嵌套了,想一想if嵌套是什么样子的? 类似if的嵌套,while嵌套就是:while里面还有while <1>while嵌套的格式 while 条件1: ...
- golang slice分割和append copy还是引用
转载自:http://studygolang.com/articles/724 1. slice1:= slice[0:2] 引用,非复制,所以任何对slice1或slice的修改都会影响对方 dat ...
- 列表生成式,迭代器&生成器
python3中range(10)就 是迭代器 列表生成式 #列表生成式 a=[0,1,2,3,4,5] b=[] for index,i in enumerate(a): a[index]+1 pr ...