南飓风 发表于 2025-2-22 19:47:40

Python--数据类型(下)

1. 聚集(set)

聚集是一个 无序、可变、不允许数据重复 的容器。
1.1 界说

v1 = {11, 22, 33, "alex"}


[*]无序:无法通过索引取值。
[*]可变:可以添加和删除元素。
[*]不允许数据重复:添加重复元素时,聚集不会发生变革。
留意:界说空聚集时,只能使用 v = set()​,不能使用 v = {}​(这样是界说一个空字典)。
v1 = set()# 空集合
v2 = {}   # 空字典
1.2 独有功能


[*] 添加元素
data = {"刘嘉玲", "关之琳", "王祖贤"}
data.add("郑裕玲")
print(data)

[*] 删除元素
data = {"刘嘉玲", "关之琳", "王祖贤"}
data.discard("关之琳")
print(data)

[*] 交集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1.intersection(s2)# 或 s1 & s2
print(s3)# {"⽪⻓⼭"}

[*] 并集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1.union(s2)# 或 s1 | s2
print(s3)

[*] 差集
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1.difference(s2)# 或 s1 - s2
print(s3)# {"刘能", "赵四"}

1.3 公共功能


[*] 长度
v = {"张三", "李四", "王五"}
print(len(v))# 3

[*] for 循环
v = {"张三", "李四", "王五"}
for item in v:
    print(item)

[*] 转换
   

[*]其他类型转换为聚集时,会自动去重。
v1 =
v2 = set(v1)
print(v2)# {11, 22, 33, 3, 99}

1.4 其他


[*]元素必须可哈希
聚集的元素必须是可哈希的值(如 int​、bool​、str​、tuple​),而 list​、set​、dict​ 不可哈希。
[*]查找速度快
聚集的查找效率非常高,由于其底层基于哈希表实现。
2. 字典(dict)

字典是一个 无序、键不重复 且元素只能是 键值对 的 可变容器。
2.1 界说

v1 = {}
v2 = dict()
info = {
    "age": 12,
    "status": True,
    "name": "qyiao",
    "hobby": ["篮球", "足球"]
}
键值要求:


[*]键:必须可哈希(如 int​、bool​、str​、tuple​)。
[*]值:可以是恣意类型。
2.2 独有功能


[*] 获取值
info = {"age": 12, "status": True, "name": "qyiao"}
data = info.get("name")
print(data)# qyiao

[*] 所有的键
info = {"age": 12, "status": True, "name": "qyiao"}
print(info.keys())# dict_keys(['age', 'status', 'name'])

[*] 所有的值
info = {"age": 12, "status": True, "name": "qyiao"}
print(info.values())# dict_values()

[*] 所有的键值对
info = {"age": 12, "status": True, "name": "qyiao"}
print(info.items())# dict_items([('age', 12), ('status', True), ('name', 'qyiao')])

[*] 设置值
data = {"name": "qyiao", "email": "xxx@live.com"}
data.setdefault("age", 18)
print(data)# {'name': 'qyiao', 'email': 'xxx@live.com', 'age': 18}

[*] 更新字典
info = {"age": 12, "status": True}
info.update({"age": 14, "name": "qyiao"})
print(info)# {'age': 14, 'status': True, 'name': 'qyiao'}

[*] 移除键值对
info = {"age": 12, "status": True, "name": "qyiao"}
data = info.pop("age")
print(info)# {'status': True, 'name': 'qyiao'}

2.3 公共功能


[*] 长度
info = {"age": 12, "status": True, "name": "qyiao"}
print(len(info))# 3

[*] 是否包含
info = {"age": 12, "status": True, "name": "qyiao"}
print("age" in info)# True

[*] for 循环
info = {"age": 12, "status": True, "name": "qyiao"}
for key, value in info.items():
    print(key, value)

2.4 其他


[*] 嵌套
字典的值可以是恣意类型,包括列表、字典等。
data = {
    "name": "汪峰",
    "age": 48,
    "wife": [{"name": "国际章", "age": 38}],
    "children": ["第一个娃", "第二个娃"]
}

3. 浮点型(float)

浮点型用于表现小数。
3.1 基本操作


[*] 界说
v1 = 3.14
v2 = 9.89

[*] 类型转换
v1 = 3.14
data = int(v1)
print(data)# 3

[*] 保留小数位数
v1 = 3.1415926
result = round(v1, 3)
print(result)# 3.142

3.2 浮点型的坑

浮点型在计算时可能存在精度问题,例如:
print(0.1 + 0.2)# 0.30000000000000004
办理方案:使用 decimal​ 模块举行正确计算。
import decimal
v1 = decimal.Decimal("0.1")
v2 = decimal.Decimal("0.2")
print(v1 + v2)# 0.3

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python--数据类型(下)