python基础集合类型

Posted swiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础集合类型相关的知识,希望对你有一定的参考价值。

集合类型:

  作用:  --> 关系运算(交集,并集,差集)

       --> 去重(有局限性)

定义方法:set()
linuxers = {1,1.1,‘a‘,(1,2,3)}    ##集合内的值,只能为不可变类型,比如int,str,float,tuple
print(type(linuxers))
<class ‘set‘>

 

需要掌握:

1、集合的定义方法

    定义方法类似于字典,{}内,以逗号分割,但不同于字典之处不是key:varual格式,集合内的元素一定是不可变类型

1     pythoners = set({alexdsb,egon,lxxdsb,oldboy,吴三江,张铁蛋})
2 
3     print(pythoners)
4 
5     pythoners = {alexdsb,egon,lxxdsb,oldboy,吴三江,张铁蛋}
6 
7     print(pythoners)

 

 

2、集合的运算(&,-,|,^,)

例题:以下是报名python和linux的学员信息,请完成对一下两个集合的运算

   1.1、求既报名linux又包名python的学员有哪些=》即求两个集合体的共同部分,称之为交集 print(pythoners & linuxers) print(pythoners.intersection(linuxers)) 1.2、求只报名python,没有报名linux的学员有哪些=》即集合pythoners减去linuxers,称之为差集 print(pythoners - linuxers) print(pythoners.difference(linuxers)) 1.3、求只报名linux,没有报名python的学员有哪些 print(linuxers - pythoners) print(linuxers.difference(pythoners)) 1.4 求老男孩所有报名的学生姓名->即求两个集合体的总和,称之为并集 print(pythoners | linuxers) print(pythoners.union(linuxers)) 1.5 求没有同时报名两门课程的学生姓名->称之为对称差集 print(pythoners ^ linuxers) print(pythoners.symmetric_difference(linuxers))

 

3、集合的成员运算(in / not in)

1     a = {1,2,3}
2     print(1 in a)
3     print(1 not in a)

 

 

4、集合的含于被含于的关系运算(>,>=,<=,<)

    a = {1,2,3}
    b = {1,2}

    print(a >= b)       ##a包含b
    print(b <= a)       ##b含于a
    print(b < a)
    print(a > b)

 

 

5、集合的去重以及集合去重的局限性

    ** 去重:去重是集合的特性

    a = {1,2,3,4,1,1}       ##去重会将1去除,只保留一个

    print(a)
    {1, 2, 3, 4}

 

局限性:

    1、不能保证原来的顺序(因为set是不依赖索引的,所以每次打印顺序不一样,所以集合是无序的)

    2、不能针对可变类型去重(list,dict等可变类型不能去重)

 

6、集合的内置方法(添加,删除)元素,add,update,pop,remove,discard

add 添加元素

    s={1,2,3}
    s.add(4)        ##在集合后面插入元素
    s.add(hello)
    print(s)   ##{1, 2, 3, 4, ‘hello‘}

update  添加元素

    s1={1,2,3,4,5}
    s1.update({3,4,5,6,7})      ##调用for循环逐个添加
    s1.update(hello)          ##调用for循环,添加h e l l o 字符串
    s1.add(aaa)               ##添加字符串‘aaa‘到s1
    print(s1)                   ##{1, 2, 3, 4, 5, 6, 7, ‘e‘, ‘l‘, ‘o‘, ‘h‘, ‘aaa‘}

pop     随机删除集合中的元素

    s = {1,2,3}
    s.pop()

remove  指定元素删除,不存在则报错

    s = {1,2,3}
    s.remove(1)     ##存在则删除
    s.remove(5)     ##不存在报错

discard 指定元素删除,不存在也不报错

    s = {1,2,3}
    s.discard(1)     ##存在则删除
    s.discard(5)     ##不存在也不报错


info.clear()        ##清空集合
info.copy()         ##复制一个集合

 

# 循环

    s={egon,alex,wxx,lxx}

    for item in s:
        print(item)

 

 

# 计算长度

    s={egon,alex,wxx,lxx}
    print(len(s))

 

去重的两种需求:

1,全部为不可变类型,并且去重后不要求顺序

技术分享图片
    info = {1,1,2,3,2,yexinlei,2.1,aaa,(oldboy,egon)}
    info=set(info)
    print(info)
View Code

 

 

2,包含可变类型(list,dict)并且要求保证去重后保留顺序

技术分享图片
info=[
    {name:egon,age:18},
    {name:alex,age:73},
    {name:egon,age:18},
    {name: lxx, age: 19},
    {name:egon,age:18},
    {name:lxx,age:19},
]

l=[]

for dic in info:
    if dic not in l:            ##判断不存在重复则添加
        l.append(dic)

info=l                          ##重新赋值给info
print(info)
View Code

 

set()





以上是关于python基础集合类型的主要内容,如果未能解决你的问题,请参考以下文章

Python基础

python基础--基本数据类型( Sets(集合)--不可变数据)

python基础语法---数据类型之集合类型

Python基础数据类型之set集合

python基础数据类型之字典+集合

python--基础数据类型 set集合