zoukankan      html  css  js  c++  java
  • day2-集合

    一 概述

    集合是无序的,天生不重复的数据组合

    集合的特性:

    • 去重,把一个列表变成一个集合,就在动去重了
    • 关系测试,测试两组数据之间的交集,并集,差集,对称查集等

    二 语法

    >>> list_1 = ['1','2','3','4']
    >>> s = set(list_1)  #把列表转换为集合
    >>> s
    {'4', '3', '1', '2'}
    >>> t = set(['4','5','6']) #把列表转换为集合

    三 关系测试

    1. 交集 intersection() 和 &

    >>> s
    {'8', '1', '10', '11', '3', '7', '4', '9', '2'}
    >>> t
    {'3', '6', '5', '4'}
    >>> s.intersection(t) 
    {'3', '4'}
    >>> a = s & t   #特殊符号&
    >>> a
    {'3', '4'}

    2. 并集 union() 和  |

    >>> s
    {'8', '1', '10', '11', '3', '7', '4', '9', '2'}
    >>> t
    {'3', '6', '5', '4'}
    >>> s.union(t)
    {'8', '10', '3', '7', '1', '4', '9', '2', '5', '6', '11'}
    >>> b = s | t  #特殊符号 |
    >>> b
    {'8', '10', '3', '7', '1', '4', '9', '2', '5', '6', '11'}

    3. 差集 difference() 和 -

    >>> s
    {'8', '1', '10', '11', '3', '7', '4', '9', '2'}
    >>> t
    {'3', '6', '5', '4'}
    >>> c = s - t  # 特殊符号 - ;返回一个新的set,在第一个s集合中,但不在t集合中
    >>> c
    {'8', '10', '7', '1', '9', '2', '11'}
    >>> s.difference(t)  #返回一个新的set, 在第一个s集合中,但不在t集合中
    {'8', '10', '7', '1', '9', '2', '11'}

    4. 对称差集 symmetric_difference()  和 ^

    >>> s
    {'8', '1', '10', '11', '3', '7', '4', '9', '2'}
    >>> t
    {'3', '6', '5', '4'}
    >>> s.symmetric_difference(t)  #返回一个新的set , 包含s 和 t 中不重复的元素
    {'8', '10', '7', '5', '9', '1', '2', '6', '11'}
    >>> d = s ^ t  #特殊符号 ^
    >>> d
    {'8', '10', '7', '5', '9', '1', '2', '6', '11'}

    5. issubset() 和 <=

    判断一个集合是否是另一个集合的子集

    >>> s_1 = set(['1','2','3','4'])
    >>> t_1 = set(['1','2'])
    >>> t_1.issubset(s_1) #测试是否t_1中的每一个元素都在s_1中
    True
    >>> t_1 <= s_1
    True
    >>> 

    6. issuperset() 和 >=

    判断一个集合是否是另一个集合的父集

    >>> s_1 = set(['1','2','3','4'])
    >>> t_1 = set(['1','2'])
    >>> t_1.issuperset(s_1) #测试是否 s_1中的每个元素都在t_1中
    False
    >>> t_1 >= s_1
    False

    7.isdisjoint()

    判断两个集合是否有交集,没有交集,则返回True

    >>> s_1 = set(['1','2','3','4'])
    >>> t_1 = set(['1','2'])
    >>> u_1 = set([7,8])
    >>> s_1.isdisjoint(t_1)
    False
    >>> s_1.isdisjoint(u_1)
    True
    >>> t_1.isdisjoint(u_1)
    True

    四 基本操作

    >>> s = ['1','2','3']
    >>> s = set(s)
    >>> s
    {'3', '1', '2'}
    >>> s.add('4')  #添加新值
    >>> s
    {'4', '3', '1', '2'}
    >>> s.update(['5','6','7'])  #在s中添加多项
    >>> s
    {'3', '7', '4', '5', '1', '6', '2'}
    >>> s.remove('1')  #使用remove可以删除一项,
    >>> s.remove('10')  #使用remove可以删除一项,删除不存在的值会报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: '10'
    >>> s
    {'3', '7', '4', '5', '6', '2'}
    >>> s.pop()  #随机删除一个值,并打印
    '3'
    >>> s
    {'7', '4', '5', '6', '2'}
    >>> s.discard('2')  #删除一个值,删除不存在的值,不会报错
    >>> s
    {'7', '4', '5', '6'}
    >>> s.discard('18') #删除一个值,删除不存在的值,不会报错
    >>> s
    {'7', '4', '5', '6'}
    >>> len(s)  #返回字典的长度
    4
    >>> '4' in s  #测试4是否是s的 成员 ,是则返回True
    True
    >>> '4' not in s  #测试4是否不是s的成员
    False
    >>> '12' not in s
    True
    >>> 
  • 相关阅读:
    网页快捷键
    2016年5月3日15:55:23笔记
    【编程的乐趣-用python解算法谜题系列】谜题一 保持一致
    重温离散系列②之良序原理
    重温离散系列①之什么是证明
    浅谈栈和队列
    [leetcode]16-最接近的三数之和
    [leetcode] 4-寻找两个有序数组的中位数
    英语句子的基本结构【转】
    [leetcode] 11-盛最多水的容器
  • 原文地址:https://www.cnblogs.com/Easonlou/p/8137110.html
Copyright © 2011-2022 走看看