文章目录
一、集合set
1.定义
集合类型:
(1)集合是多个元素的无序组合
(2)集合类型与数学中的集合概念一致
(3)集合元素之间无序,每个元素唯一,不存在相同元素
(4)集合元素不可更改,不能是可变数据类型(万一可变,就可能相同)
- 非可变数据类型:数字类型(整数,浮点数,复数);序列类型中的字符串,元组类型
- 可变数据类型:列表
2.集合类型初始化
表示:
(1)表示:用{}
表示,元素间用逗号分隔
(2)建立集合类型用{}
或set()
{}
:用逗号分割set()
:一个obj
,将其每个元素拆分(比如str就是每个字符,list就是每个元素……)
(3)建立空集合类型,必须用set()
#{}表示
a={"123",13,True}
print(a)
#{'123', 13, True}
#set()表示
s=set("123")
print(s)
#{'1', '2', '3'}
# set(obj)的用法:参数只能是一个或者没有
# 一个元素用单引号
a=set('1')
print(a)
#{'1'}
# 多个元素用单引号
b=set('123')
print(b)
#{'2', '3', '1'}
# 多个元素间用逗号间隔
set('1','2','3')
# error
# 多个元素
ls=["py123",123,True]
c=set(ls)
print(c)
#{'py123', 123, True}
"""
总结:set()中传入的参数是一个其他类型的变量,'1'和'123'都是字一个符串类型的量,'1','2','3'错是因为它是多个元素,
要传入特定的多个元素,就要像ls一样将它们包装到另一种类型中成为一个变量。
"""
3.集合操作符
(1)基本操作符:
S&T
: 交,返回一个新集合,S和T都有的元素S|T
: 并,返回一个新集合,S和T中的所元素S-T
: 差,返回一个新集合,在S但不在T中的元素S^T
: 对称差集,返回一个新集合,S和T中的非相同元素S<=T
或S>=T
:返回True
/False
,判断S和T的真子集关系。S<T
或S>T
:返回True
/False
,判断S和T的子集(包括相等)关系。
A={"p","y",123} #{'y', 123, 'p'}
B=set("pypy123") #{'1', 'y', '2', '3', 'p'}
# 交集
print(A&B) # {'p','y'}
# 并集
print(A|B) # {'1','p','2','y','3',123}
# 差集
print(A-B) # {123}
# 差集
print(B-A) # {'3','1','2'}
# 对称差集
print(A^B) # {'2','1','3',123}
# 子集
print(A<=B) # False
(2)增强操作符:
S|=T
:更新集合S,包括在集合S和T中的所有元素S-=T
:更新集合S,包括在集合S但不在T中的元素S&=T
:更新集合S,包括同时在集合S和T中的元素S^=T
:更新集合S,包括集合S和T中的非相同元素
3.集合的处理方法
S.add(x)
:如果x不在集合S中,将x增加到SS.discard(x)
:移除S中元素x,如果x不在集合S中,不报错S.remove(x)
:移除S中元素x,如果x不在集合S中,产生KeyError异常S.clear()
:移除S中所有元素S.pop()
:随机返回S的一个元素,同时在集合中移除这个元素并更新S,若S为空产生KeyError异常S.copy()
:返回集合S的一个副本len(S)
:返回集合S的元素个数x in S
:判断S中元素x,x在集合S中,返回True,否则返回Falsex not in S
:判断S中元素x,x不在集合S中,返回False,否则返回True(和上面一样,都是在则True)set(x)
:将其他类型变量x转变为集合类型
4.集合类型应用场景
# 数据去重:集合类型所有元素无重复
ls = ["p","p","y","y",123]
s = set(ls)
print(s)
'''
{'p','y',123}
'''
# 将集合转换为列表
lt = list(s)
'''
['p','y',123]
'''
二、字典dict
1.字典类型定义
理解映射:
-
映射是一种键(索引)和值(数据)的对应
-
序列类型有0…N整数作为数据的默认索引
字典类型:
(1)字典类型是映射的体现
(2)键值对:键是数据索引的扩展
(3)字典是键值对的集合,键值对之间无序
(4)采用大括号{}
和dict()
创建,键值对用冒号:
表示
(5)
格式:
<字典变量>={<键1>:<值1>,<键2>:<值2>}
<值>=<字典变量>[<键>]
<字典变量>[<键>]=<值>
# []用来向字典变量中索引或增加元素
#生成一个字典
d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
print(d)
#{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
print(d["中国"])
#'北京'
#生成一个空的字典
de={};
print(type(de)) #type(x)返回变量x的类型
#<class 'dict'>
2.字典处理函数及方法
函数或方法;
(1)del d[k]
:删除字典d中键k对应的数据值
(2)k in d
:判断键k是否在字典d中,如何在返回True,否则返回False
(3)d.keys()
:返回字典d中所有的键信息
(4)d.values()
:返回字典d中所有的值信息
(5)d.item()
:返回字典d中所有键值对信息
(6)d.get(k,<default>)
:键k存在,则返回相应值,不在则返回值
(7)d.pop(k,<default>)
:键k存在,则取出相应值,不在则返回值
(8)d.popitem()
:随机从字典d中取出一个 键值对,以元组形式返回
(9)d.clear()
:删除所有的键值对
(10)len(d)
:返回字典d中元素的个数
(11)d1.update(d2)
:添加字典2添加到字典1中
d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
print("中国"in d)
#True
print(d.keys())
#dict_keys(['中国', '美国', '法国']) #可以for遍历
print(d.values())
#dict_values(['北京', '华盛顿', '巴黎'])
print(d.get("中国","伊斯兰堡"))
#'北京'
print(d.get("巴基斯坦","伊斯兰堡"))
#'伊斯兰堡'
print(d.popitem())
#('法国', '巴黎')
#增加相同元素会出现更新
d={}
#增加元素方法1:d[新增键]=新值
d["a"]=1;d["b"]=2
print(d)
#{'a': 1, 'b': 2}
#更新现象
d["b"]=3
print(d)
#{'a': 1, 'b': 3}
#增加元素方法2:d1.update(d2)
d2={'c':3}
d.update(d2)
print(d)
#{'a': 1, 'b': 3, 'c': 3}
#更新现象
d3={'c':9}
d.update(d3)
print(d)
#{'a': 1, 'b': 3, 'c': 9}