1. 集合
由{ }包裹,无序的不重复的元素组成,分为可变集合和不可变集合
可变集合
可变集合的元素定义好后不可修改,但是集合本身可以增加、删除元素
元素的数据类型只能是数字、字符串、元组
集合名={元素1,元素2。。。}
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
print(s1)
# 集合自动去重
l1 = [2, 5, 6, 3, 6, 6]
print(list(set(l1)))
可变集合的增加
add( )添加一个元素
update()添加多个元素
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s1.add(888)
s1.update({11, 222, "haha"})
print(s1)
可变集合的删除
remove( )删除指定元素,不存在会报错
discard( )删除指定元素,不存在不会报错
pop( )删除第一个元素
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s1.remove(3)
s1.discard("hi")
s1.pop()
print(s1)
创建空集合
n = {}
print(type(n)) # <class 'dict'> 直接创建是字典
s2 = set()
print(type(s2))
可变集合的查找
in关键字 查找某元素是否存在
not in
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
print("hqyj" in s1)
其他函数
len( ) 计算元素个数
set( ) 生成一个集合
copy( ) 拷贝
clear( ) 清空集合元素
intersection( ) 求两个集合的交集
union( )求两个集合的并集
issubset( ) 判断两个集合之间是否是子集关系
issuperset( ) 判断集合中所有元素是否都包含在原始集合中
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s2 = {2, 333, 5, 666, "hi"}
s3 = {2, 5}
# 交集
print(s1.intersection(s2))
# 并集
print(s1.union(s2))
# s3是s2的子集
print(s3.issubset(s2))
# s2中是否包含s3的所有元素
print(s2.issuperset(s3))
不可变集合
元素不可变,元素个数也不可变
s1 = frozenset({"hello", "labubu"})
print(s1)
print(type(s1))
2. 字典
序列:字符串、列表、元组、集合、字典
有序序列:字符串、列表、元组
无序序列:集合、字典
由{ }包裹,无序可修改,元素以键值对的形式存在
字典名={键1:值1,键2:值2。。。}
d1 = {"name": "聂廉杰", "sex": "m", "class": 25061}
print(d1)
print(type(d1))
# dict.fromkeys(iterable, value)
# iterable序列,里边存放键
# value值,默认值None
# d2 = dict.fromkeys([1, 2, 3])
d2 = dict.fromkeys([1, 2, 3], 999)
print(d2)
print(type(d2))
键值对特点
键是唯一的,键和值一一对应
键只能是数字、字符串、元组,不能是列表
值可以是任意类型
字典的访问
字典名[键名]
d1 = {"name": "nlj", "sex": "m", "class": 25061, "friend": "zs", "f_class": 25061}
print(d1["class"])
字典的相关函数
键值对的添加:
直接添加
update( )字典合并
d1 ={"name":"nlj","sex":"m","class":25061}
d2 ={"friend":"zs","f_class":25061}
d1["f_gf"]="ls"
print(d1)
d2.update(d1)
print(d2)
键值对的删除
pop |
参数:键名 |
popitem |
随机删除,python3.7后,删除最后一个 |
clear |
删除所有元素 |
del |
删除字典 |
d1 ={"name":"nlj","sex":"m","class":25061}
# d1.pop("sex")
# d1.popitem()
# d1.clear()
# del d1
print(d1)
键值对的修改
直接修改修改单个元素 字典名[键名]=新的值
update( )修改多个
d1 = {"name": "nlj", "sex": "m", "class": 25061}
d1["class"]=61
d1.update({"name": "詹姆斯", "sex": "man"})
print(d1)
键值对的查询
直接键名查询
get( ) 如果键名不存在返回自定义提示语,默认None
in 或 not in 查找键名
setdefault( ) 如果键值对不存在会创建一个键值对
d1 ={"name":"nlj","sex":"m","class":25061}
print(d1.get("nameqwe"))
print(d1.get("name","不存在"))
print(d1.setdefault("name"))
print(d1.setdefault("color", "black"))
print(d1)
其他函数
len |
计算键值对的个数 |
copy |
拷贝 |
keys |
返回字典中所有的key值 |
values |
返回字典中所有的value值 |
items |
返回字典中所有键值对 |
d1 ={"name":"nlj","sex":"m","class":25061}
print(d1.keys())
print(d1.values())
print(d1.items())
print(d1)