Python--数据类型(下)

打印 上一主题 下一主题

主题 876|帖子 876|积分 2628

1. 聚集(set)

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

  1. v1 = {11, 22, 33, "alex"}
复制代码


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


  • 添加元素
    1. data = {"刘嘉玲", "关之琳", "王祖贤"}
    2. data.add("郑裕玲")
    3. print(data)
    复制代码
  • 删除元素
    1. data = {"刘嘉玲", "关之琳", "王祖贤"}
    2. data.discard("关之琳")
    3. print(data)
    复制代码
  • 交集
    1. s1 = {"刘能", "赵四", "⽪⻓⼭"}
    2. s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    3. s3 = s1.intersection(s2)  # 或 s1 & s2
    4. print(s3)  # {"⽪⻓⼭"}
    复制代码
  • 并集
    1. s1 = {"刘能", "赵四", "⽪⻓⼭"}
    2. s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    3. s3 = s1.union(s2)  # 或 s1 | s2
    4. print(s3)
    复制代码
  • 差集
    1. s1 = {"刘能", "赵四", "⽪⻓⼭"}
    2. s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    3. s3 = s1.difference(s2)  # 或 s1 - s2
    4. print(s3)  # {"刘能", "赵四"}
    复制代码
1.3 公共功能


  • 长度
    1. v = {"张三", "李四", "王五"}
    2. print(len(v))  # 3
    复制代码
  • for 循环
    1. v = {"张三", "李四", "王五"}
    2. for item in v:
    3.     print(item)
    复制代码
  • 转换
       

    • 其他类型转换为聚集时,会自动去重。
    1. v1 = [11, 22, 33, 11, 3, 99, 22]
    2. v2 = set(v1)
    3. print(v2)  # {11, 22, 33, 3, 99}
    复制代码
1.4 其他


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

2. 字典(dict)

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

  1. v1 = {}
  2. v2 = dict()
复制代码
  1. info = {
  2.     "age": 12,
  3.     "status": True,
  4.     "name": "qyiao",
  5.     "hobby": ["篮球", "足球"]
  6. }
复制代码
键值要求:


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


  • 获取值
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. data = info.get("name")
    3. print(data)  # qyiao
    复制代码
  • 所有的键
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. print(info.keys())  # dict_keys(['age', 'status', 'name'])
    复制代码
  • 所有的值
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. print(info.values())  # dict_values([12, True, 'qyiao'])
    复制代码
  • 所有的键值对
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. print(info.items())  # dict_items([('age', 12), ('status', True), ('name', 'qyiao')])
    复制代码
  • 设置值
    1. data = {"name": "qyiao", "email": "xxx@live.com"}
    2. data.setdefault("age", 18)
    3. print(data)  # {'name': 'qyiao', 'email': 'xxx@live.com', 'age': 18}
    复制代码
  • 更新字典
    1. info = {"age": 12, "status": True}
    2. info.update({"age": 14, "name": "qyiao"})
    3. print(info)  # {'age': 14, 'status': True, 'name': 'qyiao'}
    复制代码
  • 移除键值对
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. data = info.pop("age")
    3. print(info)  # {'status': True, 'name': 'qyiao'}
    复制代码
2.3 公共功能


  • 长度
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. print(len(info))  # 3
    复制代码
  • 是否包含
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. print("age" in info)  # True
    复制代码
  • for 循环
    1. info = {"age": 12, "status": True, "name": "qyiao"}
    2. for key, value in info.items():
    3.     print(key, value)
    复制代码
2.4 其他


  • 嵌套
    字典的值可以是恣意类型,包括列表、字典等。
    1. data = {
    2.     "name": "汪峰",
    3.     "age": 48,
    4.     "wife": [{"name": "国际章", "age": 38}],
    5.     "children": ["第一个娃", "第二个娃"]
    6. }
    复制代码

3. 浮点型(float)

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


  • 界说
    1. v1 = 3.14
    2. v2 = 9.89
    复制代码
  • 类型转换
    1. v1 = 3.14
    2. data = int(v1)
    3. print(data)  # 3
    复制代码
  • 保留小数位数
    1. v1 = 3.1415926
    2. result = round(v1, 3)
    3. print(result)  # 3.142
    复制代码
3.2 浮点型的坑

浮点型在计算时可能存在精度问题,例如:
  1. print(0.1 + 0.2)  # 0.30000000000000004
复制代码
办理方案:使用 decimal​ 模块举行正确计算。
  1. import decimal
  2. v1 = decimal.Decimal("0.1")
  3. v2 = decimal.Decimal("0.2")
  4. print(v1 + v2)  # 0.3
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表