• python 集合(set)


    Set(集合),是一个无序不重复的元素集。

    目录

    创建

    空集合

    多类型创建集合

    过滤重复元素

    添加

    添加简单元素

    添加重复的元素

    不能添加的类型

    Set的元素不能是列表

    Set的元素不能是字典

    添加复杂元素

    更新

    删除

    remove

    discard

    遍历

    遍历方法1

    遍历方法2

    类型转换

    集合转化为列表

    集合转化为元组

    元组转化为集合

    交集

    并集

    总结


    创建

    创建set需要一个list、tuple、dict、str作为输入集合,

    当然也可以使用set()创建一个空集合,之后再添加元素。

    空集合

    示例如下:

    1. s1 = set()
    2. print(s1)
    3. print(type(s1))
    4. # 运算结果
    5. # set()
    6. #

    多类型创建集合

    通过列表、元组、字典、字符串作为输入集合来创建集合或者转化为集合。

    示例如下:

    1. s2 = set([1, 2, 3, 4]) # list
    2. print(s2)
    3. print(type(s2))
    4. s3 = set((1, 2, 3, 4)) # tuple
    5. print(s3)
    6. print(type(s3))
    7. s4 = set({1: 'a', 2: 'b', 3: 'c', 4: 'd'}) # dict
    8. print(s4)
    9. print(type(s4))
    10. s5 = set('zhangsan') # dict
    11. print(s5)
    12. print(type(s5))
    13. # 运算结果
    14. # {1, 2, 3, 4}
    15. #
    16. # {1, 2, 3, 4}
    17. #
    18. # {1, 2, 3, 4}
    19. #
    20. # {'a', 'n', 'h', 'g', 's', 'z'}
    21. #

    过滤重复元素

    当创建集合时,输入集中有重复元素就会被自动过滤。

    示例如下:

    1. s6 = set([1, 2, 3, 4, 5, 2, 4])
    2. print(s6)
    3. s7 = set((1, 3, 3, 4, 5, 2, 4))
    4. print(s7)
    5. s8 = set({0: 'zhangsan', 1: 'zhangsan'})
    6. print(s8)
    7. # 运算结果
    8. # {1, 2, 3, 4, 5}
    9. # {1, 2, 3, 4, 5}
    10. # {0, 1}

    添加

    添加简单元素

    示例如下:

    1. s9 = set([1, 2, 3])
    2. s9.add(4)
    3. s9.add(5)
    4. print(s9)
    5. # 运算结果
    6. # {1, 2, 3, 4, 5}

    添加重复的元素

    可以添加重复的元素,但是没有效果。

    示例如下:

    1. s9 = set([1, 2, 3])
    2. s9.add(4)
    3. s9.add(1)
    4. s9.add(1)
    5. print(s9)
    6. # 运算结果
    7. # {1, 2, 3, 4}

    不能添加的类型

    Set的元素不能是列表

    因为列表类型是可变的。

    示例如下:

    1. s9 = set([1, 2, 3])
    2. s9.add(4)
    3. s9.add([4, 5, 6])
    4. print(s9)

    抛出异常:

    1. Traceback (most recent call last):
    2. File "E:\lianxipy\day3\集合.py", line 50, in
    3. s9.add([4, 5, 6])
    4. TypeError: unhashable type: 'list'

    Set的元素不能是字典

    因为字典是可变的。

    示例如下:

    1. s9 = set([1, 2, 3])
    2. s9.add(4)
    3. # s9.add([4, 5, 6])
    4. s9.add({'l': 'lisi', 'z': 'zhangsan'})
    5. print(s9)

    抛出异常:

    1. Traceback (most recent call last):
    2. File "E:\lianxipy\day3\集合.py", line 51, in
    3. s9.add({'l': 'lisi', 'z': 'zhangsan'})
    4. TypeError: unhashable type: 'dict'

    添加复杂元素

    可通过add()添加元素、字符串的值。

    示例如下:

    1. s9 = set([1, 2, 3])
    2. s9.add(4)
    3. s9.add((4, 5, 6, 7))
    4. s9.add('zhangsan')
    5. print(s9)
    6. # 运算结果
    7. # {1, 2, 3, 4, 'zhangsan', (4, 5, 6, 7)}

    更新

    更新整个列表、元素、字符串会被分解为单个进行更新。

    示例如下:

    1. s10 = set([1, 2, 3, 4])
    2. s10.update((5, 6, 7))
    3. s10.update([8, 9, 7])
    4. s10.update('zhangsan')
    5. print(s10)
    6. # 运算结果
    7. # {1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'g', 'z', 'n', 'h', 's'}

    删除

    remove

    示例如下:

    1. s10 = set([1, 2, 3, 4])
    2. s10.update((5, 6, 7))
    3. s10.update([8, 9, 7])
    4. s10.update('zhangsan')
    5. s10.remove('z')
    6. print(s10)
    7. # 运算结果
    8. # {1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'n', 'g', 'h', 's'}

    抛出异常:

    1. Traceback (most recent call last):
    2. File "E:\lianxipy\day3\集合.py", line 63, in
    3. s10.remove('z')
    4. KeyError: 'z'

    discard

    使用discard删除元素,与remove使用方法相同,且元素不存在也不会抛出异常。

    示例如下:

    1. s10 = set([1, 2, 3, 4])
    2. s10.update((5, 6, 7))
    3. s10.update([8, 9, 7])
    4. s10.update('zhangsan')
    5. s10.discard('z')
    6. s10.discard('z')
    7. print(s10)
    8. # 运算结果
    9. # {1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'n', 'g', 'h', 's'}

    遍历

    Set是没有索引的,无法通过索引获取元素。

    遍历方法1

    示例如下:

    1. s11 = set([1, 2, 3, 4, 5, 6])
    2. for i in s11:
    3. print(i)

    遍历方法2

    示例如下:

    1. s11 = set([1, 2, 3, 4, 5, 6])
    2. for index, item in enumerate(s11):
    3. print(index, item)

    类型转换

    集合转化为列表

    示例如下:

    1. s12 = {1, 2, 3, 4}
    2. print(type(s12))
    3. l12 = list(s12)
    4. print(type(l12))
    5. # 运算结果
    6. #
    7. #

    集合转化为元组

    示例如下:

    1. s13 = {1, 2, 3, 4}
    2. print(type(s13))
    3. t13 = tuple(s13)
    4. print(type(t13))
    5. print(t13)
    6. # 运算结果
    7. #
    8. #
    9. # (1, 2, 3, 4)

    元组转化为集合

    示例如下:

    1. t1 = (1, 2, 3, 4, 5, 6,)
    2. s14 = set(t1)
    3. print(s14)
    4. # 运算结果
    5. # {1, 2, 3, 4, 5, 6}

    交集

    取两个集合的交集,有两种方式实现。

    示例如下:

    1. s15 = {1, 2, 3, 4, 5, 6}
    2. s16 = {2, 3, 5, 6, 8}
    3. a1 = s15 & s16
    4. print(a1)
    5. a2 = set.intersection(s15, s16)
    6. print(a2)
    7. # 运算结果
    8. # {2, 3, 5, 6}
    9. # {2, 3, 5, 6}

    并集

    取两个集合的并集,也是有两个方式实现。

    示例如下:

    1. s15 = {1, 2, 3, 4, 5, 6}
    2. s16 = {2, 3, 5, 6, 8}
    3. u1 = s15 | s16
    4. print(u1)
    5. u2 = set.union(s15, s16)
    6. print(u2)
    7. # 运算结果
    8. # {1, 2, 3, 4, 5, 6, 8}
    9. # {1, 2, 3, 4, 5, 6, 8}

    总结

    主要是对python set集合类型的增删改遍历及特性的整理。

  • 相关阅读:
    Oracle中的视图
    Dubbo3元数据参考手册
    从三线城市公司跳槽美团关键,啃透了腾讯T8-3手写Java高级笔记
    制造业如何数字化转型?
    大数据:Sqoop 简介与安装
    负载均衡(DR)
    嵌入式学习——3——UDP TFTP简易文件传输
    Smart UI Web 16.0.1 WebComponents htmlelements Crack
    朋友圈早上好问候语,祝福朋友健康幸福,情谊久久!
    【仿牛客网笔记】 Kafka,构建TB级异步消息系统——优化登陆模块、Kafka入门、Spring整合Kafka
  • 原文地址:https://blog.csdn.net/json_ligege/article/details/134513504