zoukankan      html  css  js  c++  java
  • 初学Python——集合及其运算

    一、集合定义及其功能

    集合是一个无序的、不重复的数据组合,和字典列表一样也是一种数据类型。

    集合两个最主要的功能:①去重(把一个列表变成集合,就自动去重了)

    ②关系测试(测试两组数据之间的交、并、差集等关系)

    二、关系测试

    首先,如何创建集合?

    两种方式:(1)直接创建

    a=set([1,8,2,3,5,4,5,3])

    (2)将列表转化成集合

    list1=[5,9,7,3,6,6,7,95,78,65,102]       #创建列表

    list1=set(list1)                                      #将列表转化成集合

    在这里需要说明,集合是无序的,尽管将集合a输出:print(a),得到的结果是

    看上去好像自动做了排序,其实不然,只是集合的数据太少了,输出list1就不是这样了:

    1.取两个集合的交集:

    两种写法:①intersection()方法

    print(list1.intersection(a))
    print(a.intersection(list1))

    这两种写法没有任何区别,输出结果都是

    ②数学表示

    print(list_1 & a)

    2.取并集:

    也是两种方法:①union()方法

    print("union:",a.union(list_1))

    ②数学表示

    print("union:",a|list_1)

     输出结果:

    3.取差集:

    亦是两种方法:①difference()方法

    print("difference:",list_1.difference(a))  #差集(list_1减去交集)
    print("difference:",a.difference(list_1))  #差集(a减去交集)

    ②数学表示

    print("list_1 - a :",list_1-a)
    print("a - list_1 :",a-list_1)

    运行结果:

    4.判断是否是父集和子集的关系:

    issubset()方法和issuperset()方法

    print("issubset:",list_1.issubset(a))         #判断list_1是不是a的子集
    print("issuperset:",a.issuperset(list_1))   #判断a是不是List_1的父集

    当然,肯定都不是,再创建一个集合试一试

    list_2=set([1,3,5])
    print(list_2.issubset(a))       #判断list_2是不是a的子集,是则返回True
    print(a.issuperset(list_2))    #判断a是不是list_2的父集,不是返回False

    运行结果:

    5.对称差集:

    对称差集是指两个集合的并集减去交集

    ①symmetric_difference()方法

    print("symmetric_difference:",a.symmetric_difference(list_1))

    ②数学表示

    print("a^list_1:",a^list_1)

    运行结果:

    6.判断是不是相交

    list_3=set([50,30,60])
    print("isdisjoint:",a.isdisjoint(list_3))   #判断两个集合之间的关系是不是相交,如果相交返回False
    print("isdisjoint:",a.isdisjoint(list_2))

    运行结果:

    三、集合的操作

    1.添加数据

    添加一项:

    a.add("abc")   #添加一项

    添加多项:

    a.update([20,30,90])

    2.删除数据

    ①remove()方法

    a.remove("abc") #删除字符“abc”

    ②pop()方法

    print(a.pop())  #随机删除,并返回删除的值

    ③discard()方法

    a.discard(30)   #删除数据

    3.获取集合的长度

    print(len(a)) #集合 a 的长度

    4.判断数据是否是集合的成员

    print(30 in a)           #判断30是否是集合a的成员(列表、字典、集合、字符串都可以用这种方法来判断)
    print(30 not in a)   #判断30是否不是集合a的成员
  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/V587Chinese/p/8783748.html
Copyright © 2011-2022 走看看