zoukankan      html  css  js  c++  java
  • python基础数据类型一(集合)

    集合

    集合在python中也是一个数据类型,我们只用它自带的特性,其余的操作很少使用

    集合在Pyhton中的关键字是set,也是以{}的形式展示 只不过集合是一个没有值得字典,为什么这么说呢??

    因为集合中的元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重

    lst = [1,3,4,112,23,1,3,1,41,12,3,1]
    print(set(lst))  # 这样就没有重复的元素出现了,我们在将集合抓换成列表
    list(set(lst)) # 这样就把没有重复的集合转成列表了
    print(list(set(lst)))
    

    集合是无序,可变的数据类型,说到可变我们就知道集合是能够增加和删除等操作的,我们来看看怎么操作
    集合定义方式:

    set("12345")
    {1,2,3,4,5} # 将字符串进行迭代添加
    

    set集合增删改查

    增加

    s = {"刘嘉玲", '关之琳', "王祖贤"}
    s.add("郑裕玲")
    print(s)
    s.add("郑裕玲") # 重复的内容不会被添加到set集合中
    print(s)
    s = {"刘嘉玲", '关之琳', "王祖贤"}
    s.update("麻花藤") # 迭代更新
    print(s)
    s.update(["张曼⽟", "李若彤","李若彤"])
    print(s)
    

    删除  

    s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
    item = s.pop() # 随机弹出⼀个.
    print(s)
    print(item)
    s.remove("关之琳") # 直接删除元素
    # s.remove("⻢⻁疼") # 不存在这个元素. 删除会报错
    print(s)
    s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和
    dict区分的.
    print(s) # set()
    

    修改

    # set集合中的数据没有索引. 也没有办法去定位⼀个元素. 所以没有办法进⾏直接修改.
    # 我们可以采⽤先删除后添加的⽅式来完成修改操作
    s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
    # 把刘嘉玲改成赵本⼭
    s.remove("刘嘉玲")
    s.add("赵本⼭")
    print(s)
    

    查询  

    # set是⼀个可迭代对象. 所以可以进⾏for循环
    for el in s:
     print(el)
    

    常⽤操作  

    s1 = {"刘能", "赵四", "⽪⻓⼭"}
    s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    # 交集
    # 两个集合中的共有元素
    print(s1 & s2) # {'⽪⻓⼭'}
    print(s1.intersection(s2)) # {'⽪⻓⼭'}
    # 并集
    print(s1 | s2) # {'刘科⻓', '冯乡⻓', '赵四', '⽪⻓⼭', '刘能'}
    print(s1.union(s2)) # {'刘科⻓', '冯乡⻓', '赵四', '⽪⻓⼭', '刘能'}
    # 差集
    print(s1 - s2) # {'赵四', '刘能'} 得到第⼀个中单独存在的
    print(s1.difference(s2)) # {'赵四', '刘能'}
    # 反交集
    print(s1 ^ s2) # 两个集合中单独存在的数据 {'冯乡⻓', '刘能', '刘科⻓', '赵四'}
    print(s1.symmetric_difference(s2)) # {'冯乡⻓', '刘能', '刘科⻓', '赵四'}
    s1 = {"刘能", "赵四"}
    s2 = {"刘能", "赵四", "⽪⻓⼭"}
    # ⼦集
    print(s1 < s2) # set1是set2的⼦集吗? True
    print(s1.issubset(s2))
    # 超集
    print(s1 > s2) # set1是set2的超集吗? False
    print(s1.issuperset(s2))
    

    set集合本⾝是可以发⽣改变的. 是不可hash的. 我们可以使⽤frozenset来保存数据. frozenset是不可变的. 也就是⼀个可哈希的数据类型

    s = frozenset(["赵本⼭", "刘能", "⽪⻓⼭", "长桂"])
    dic = {s:'123'} # 可以正常使⽤了
    print(dic)
    

    集合其他操作

     ```python
     & #交集
     | #并集
     - #差集
     ^ #对称差集
     > #父集
     < #子集
     forzenset()#冻结集合
     
     
     注意:(列表去重)
     # lst = [1,2,1,2,4,2,45,3,2,45,2345,]
     # print(list(set(lst)))
     ```
    

    最后我们对这些数据类型进行一个总结,我们按照有序,无序,可变,不可变,取值方式来总结

    • 有序:
      • 数字
      • 字符串
      • 列表
      • 元组
    • 无序:
      • 字典
      • 集合
    • 可变数据类型:
      • 列表
      • 字典
      • 集合
    • 不可变数据类型:
      • 字符串
      • 数字
      • 元组
    • 取值顺序:
      • 直接取值 — 数字,布尔值,集合
      • 顺序取值(索引) — 列表,元组,字符串
      • 通过键取值 — 字典

    类型转换

    元组 => 列表   list(tuple)
    列表 => 元组   tuple(list)
    列表 => 字符串 str.join(list)
    字符串 => 列表 str.split()
    
    转换成False的数据:
    0,'',None,[],(),{},set() 都是False
    
  • 相关阅读:
    DOM(九)使用DOM设置文本框
    DOM(八)使用DOM控制表单
    DOM(七)使用DOM控制表格
    Javascript制作伸缩的二级菜单
    Javascript屏蔽鼠标的右键的两种方法。
    DOM(六)事件类型
    DOM(五)事件对象
    DOM(四)事件流
    DOM(三)使用DOM + Css
    Javascript一个在页面内追加元素的小例子
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11619930.html
Copyright © 2011-2022 走看看