三.2数据类型——无序列
P.5数据类型——集合
由{}包裹,无序的不重复的元素组成,分为可变集合和不可变集合,自带有去重功能(去除重复元素)
P.5.1可变集合
可变集合的元素定义好后不可被修改,但集合本身可以增加、删除元素
故元素类型只能是数字、字符串、元组
格式:
集合名 = {元素1, 元素2, ......}
s1 = {2, 5, 2, 3, "hi", "hqyj", (22, 33, 88)}
print(s1)
print(type(s1)) # 该输出是<class 'set'>
s1 = {}
print(type(s2)) # 无内容的话输出的是<class 'dict'>
# 去重
l1 = [2, 8, 5, 6, 8, 8]
print(list(set(l1))) # 将列表强转成集合,再转回列表
P.5.1.1可变集合的增加
add() | 添加一个元素 |
update() | 添加多个元素 |
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
s1.add(888) # 添加元素888
s1.update({11, 222, "haha"}) # 只能增加一个元素,(而将多个元素放在同一个列表(或集合、元组)中也可以进行添加)
print(s1)
P.5.1.2可变元素的删除
remove() | 删除指定元素 指定元素不存在会报错 |
discard() | 删除指定元素 指定元素不存在不会报错,相当于无效代码 |
pop() | 删除第一个元素 默认删除第一个元素,无任何参数 |
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
# s1.remove(3)
# s1.discard("hi")
s1.pop()
print(s1)
# 打印结果:{3, (22, 66, 99), 5, 'hi', 'hqyj'}
P.5.1.3可变元素的查找
关键字 in 查找某个元素是否存在(not in作用相反)
s1 = {2, 5, 2, 3, "hi", 2, "hqyj", (22, 66, 99)}
print("hqyj" in s1) # 结果打印True
P5.1.4其他函数
set.len() | 计算元素个数 | |
set.set() | 生成一个集合 | |
set.copy() | 拷贝 | |
set.clear() | 清空集合元素 | |
set.del() | 清空集合 | |
set.intersection() | 求交集 | |
set.union() | 求并集 | |
set.issubset() | 求子集 | set是否为是s1的子集(结果返回True或False,下同) |
set.issuperset() | 反求子集 | s1是否为set的子集/set是否包含s1的所有元素 |
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))
P.5.2不可变集合
元素不可变,元素个数也不可变
s1 = frozenset({"hello", "lalala"}) # 集合元素不可变
print(s1)
print(type(s1)) # 打印结果为<class 'frozenset'>
P.6数据类型——字典
由{}包裹,无序可修改,元素以键值对的形式存在
格式:
字典名 = {键1: 值1, 键2: 值2......}
d1 = {"name": "hqyj", "sex": "m", "class": 25061}
print(d1)
print(type(d1))
也可以用函数去生成字典
dict.fromkeys(iterable, value)
iterable(键) 是一个序列(里面存放的是键)
value(值) 只是一个值(里面存放的默认值为None),前面序列有几个键,这几个键的值都是该value值
# 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))
# 打印结果为:{1: 999, 2: 999, 3: 999}
P.6.1键值对特点
键是唯一的,键和值一一对应
键只能是数字、字符串、元组,不能是列表(键名唯一)
值可以是任意类型
d1 = {"name": "hqyj", "sex": "m", "class": 25061, "friend": "zs", "f_class": 25061}
print(d1)
print(type(d1))
P.6.2字典的访问
字典名[键名]
d1 = {"name": "hqyj", "sex": "m", "class": 25061, "friend": "zs", "f_class": 25061}
print(d1["class"])
# 打印结果:25061
P.6.3字典的相关函数
P.6.3.1键值对的添加
直接添加:字典名[键名] = 值
# 字典名[键名] = 值,如果d1中没有该键名,则自动添加,若有输入的键名,则去修改键名对应的元素
d1 = {"name": "hqyj", "sex": "m", "class": 25061, "friend": "zs", "f_class": 25061}
d1["fff"] = "ls"
print(d1)
d1["sex"] = "man"
print(d1)
# 打印结果:{'name': 'hqyj', 'sex': 'man', 'class': 25061, 'friend': 'zs', 'f_class': 25061, 'fff': 'ls'}
P.6.3.2键值对的删除
pop(参数) popitem() | 参数:键名 3.7版本之前:随机删除 现在版本:删除最后一个 |
clear() | 删除所有元素 |
del关键字 | 删除字典 |
d1 = {"name": "hqyj", "sex": "m", "class": 25061}
# d1.pop("sex") 删除指定键名所对应的键值对
# d1.popitem() 随机删除或删除最后一个元素(看版本)
# d1.clear() 清楚所有元素
# del d1 删除该字典
print(d1)
# 报错,因为此时字典d1已经在内存中被删除了
P.6.3.3键值对的修改
直接修改:修改单个元素
字典名[键名] = 新的值
update()修改多个值
d1 = {"name": "hqyj", "sex": "m", "class": 25061}
d1["class"] = 61 # 单个元素修改
d1.update({"name": "詹姆斯", "sex": "man", "color": "black"})
# 多个元素修改,若原字典无该键值对,则将其添加进去
print(d1)
P.6.3.4键值对的查询
直接键名查询
get()如果键名不存在,则返回自定义的提示语,默认None
in 或 not in
d1 = {"name": "hqyj", "sex": "m", "class": 25061}
# print(d1.get("name"))
# print(d1.get("nameqwe")) 返回值为None
print(d1.get("name", "不存在"))
# 如果name存在,返回对应的值,如果name不存在,且无第二个参数,则默认返回None,如果给到第二个参数,且d1中无name,则返回给到的第二个参数。
print(d1)
setdefault()如果键值对不存在,会创建一个键值对
d1 = {"name": "hqyj", "sex": "m", "class": 25061}
d1.update({"name": "詹姆斯", "sex": "man"})
print(d1.setdefault("name"))
print(d1.setdefault("color", "black"))
# 该键值对不存在,直接在d1字典中添加一个新的键值对
print(d1)
P.6.3.5其他函数
len() | 计算键值对的个数 |
copy() | 拷贝 |
keys() | 返回字典中所有的key值 |
values() | 返回字典中所有的value值 |
items() | 返回字典中所有的键值对 按键值对拆成元组的形式返回 |
d1 = {"name": "nlj", "sex": "m", "class": 25061}
d1.update({"name": "詹姆斯", "sex": "man"})
print(d1.keys()) # 返回d1中所有的键名,以列表的形式输出
print(d1.values()) # 返回d1中所有的值,以列表的形式输出
print(d1.items()) # 返回d1中所有的键值对,以元组的形式输出
print(d1)
更多内容请看——>python1_Gu_shiwww的博客-CSDN博客
下一篇跳转链接:python函数-CSDN博客