zoukankan      html  css  js  c++  java
  • 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
      



  • 相关阅读:
    35.使用拦截器实现权限验证
    34.TokenInterceptor防止表单重复提交
    33.使用默认的execAndWait拦截器
    32.使用来MethodFilterInterceptor灵活拦截
    31.自定义拦截器
    sql 学习笔记 档
    AVR文章7课时:动态数字化控制
    MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字
    左右TS分析流
    Java达到MySQL数据库备份(两)
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/10301619.html
Copyright © 2011-2022 走看看