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 = [11, 22, 33, 11, 3, 99, 22]
- v2 = set(v1)
- print(v2) # {11, 22, 33, 3, 99}
复制代码 1.4 其他
- 元素必须可哈希
聚集的元素必须是可哈希的值(如 int、bool、str、tuple),而 list、set、dict 不可哈希。
- 查找速度快
聚集的查找效率非常高,由于其底层基于哈希表实现。
2. 字典(dict)
字典是一个 无序、键不重复 且元素只能是 键值对 的 可变容器。
2.1 界说
- 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([12, True, 'qyiao'])
复制代码 - 所有的键值对
- 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
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |