• python入门 集合(四)




    集合

    集合是一个无序的不重复元素序列,可以迭代,也可以修改。集合迭代的时候元素是随机的。

    集合通常用来 membership testing, 去重, 也可以用来求交集并集补集。

    介绍一下如何创建集合和集合常见的用法。

    创建集合

    	>>> s1 = set()
    	>>> print(s1)
    	set()
    	
    	>>> l1 = [1, 2, 3, 4, 5, 4, 3]
    	>>> s2 = set(l1)
    	>>> print(s2)
    	{1, 2, 3, 4, 5}
    	#可以看到集合可以用来去重
    	
    	>>> s3 = set('jwang')
    	>>> print(s3)
    	{'n', 'w', 'j', 'g', 'a'}
    	# 可以看到集合迭代的时候元素是随机的
    	
    	>>> s4 = set(["C", “C++”, “Python”])
    	>>> print(s4)
    	{'C', 'Python', 'C++'}
    

    修改集合

    1. 添加 add

      	>>> print(s2)
      	{1, 2, 3, 4, 5}
      	>>> s2.add(6)
      	>>> print(s2)
      	{1, 2, 3, 4, 5, 6}
      	>>> s2.add((7,8))
      	>>> print(s2)
      	{1, 2, 3, 4, 5, 6, (7, 8)}
      
    2. 更新:通过传入一个列表来更新 update(list)

      	>>> print(s2)
      	{1, 2, 3, 4, 5, 6, (7, 8)}
      	>>> s2.update([6, 0])
      	>>> s2
      	{0, 1, 2, 3, 4, 5, 6, (7, 8)}
      	>>> s2.update([7, 8, 9], [10, 11])
      	>>> s2
      	{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, (7, 8)}
      	>>> 
    

    更新:通过传入一个集合来更新 update(set)

      >>> s2.update({100, 200})
      >>> s2
    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
    
    1. 删除 remove(val) discard(val)

      不同点是remove在元素不存在时会报错,discard什么也不做。

        >>> s2.remove(0)
        >>> s2
      	{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
        >>> s2.discard(0)
        >>> s2.remove(0)
      	Traceback (most recent call last):
      	  File "<stdin>", line 1, in <module>
      	KeyError: 0
      

    一些其他方法

    	# copy 浅复制
    	>>> s3 = s2.copy()
    	>>> s3
    	{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 200, 100, (7, 8)}
    	# clear 清空
    	>>> s3.clear()
    	>>> s3
    	set()
    	# set pop(),随机删除一个元素,并返回
    	>>> s = set([1, 2, 3])
    	>>> s.pop()
    	1
    	>>> s
    	{2, 3}
    

    集合间操作

    1. 交集

      >>> s2 = set([1, 2, 3, 4, 5, 10, 15, 22])
      >>> s1 = set([1, 2, 3, 4, 5, 6, 7, 8])
      >>> s1 & s2
      {1, 2, 3, 4, 5}
      >>> s1.intersection(s2)
      {1, 2, 3, 4, 5}
      
    2. 求集合的不同

      >>> s1.difference(s2)
      {8, 6, 7}
      >>> s2.difference(s1)
      {10, 22, 15}
      
    3. 是不是子集

      >>> s3 = set([6, 7, 8])
      >>> s2.issubset(s2)
      True
      >>> s2.issubset(s1)
      False
      >>> s1.issuperset(s3)
      True
      



  • 相关阅读:
    剑指 Offer 22. 链表中倒数第k个节点
    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
    Leetcode1450. 在既定时间做作业的学生人数
    Leetcode1572. 矩阵对角线元素的和
    Leetcode 1480. 一维数组的动态和
    Idea连接数据库报错
    Java实现二叉树层次遍历并存入List的方法:从上往下,从左往右
    SpringCloud资源网站
    Java循环对list进行remove
    Java中字符串判空的正确打开方式
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/10301619.html
Copyright © 2020-2023  润新知