zoukankan      html  css  js  c++  java
  • Python学习【第6篇】:集合的定义和基本方法

    1.概念

    (1)不同元素组成

       例:

    s = {1,2,3,4,4,4,4,4,4}
    print(s)
    运行结果:
    {1, 2, 3, 4}
    因为是不同元素组成,因此去重了

    (2)无序

     例:

    s = {"xiao","xing","ceshi","admin"}
    print(s)
    运行结果每次显示的顺序不一样,代表是无序的

    (3)集合元素必须是不可变类型

      例:

    s = {[123,456],789}
    print(s)
    运行结果:
    TypeError: unhashable type: 'list'
    因为列表是可变,所以会报错

    2.集合的方法

    1.add   添加
    s = {123,456,789}
    s.add(2)
    print(s)
    运行结果:
    {456, 2, 123, 789}

    2.clear 清空
    s = {123,456,789}
    s.clear()
    print(s)
    运行结果:
    set()

    3.copy 复制
    s = {123,456,789}
    s1 = s.copy()
    print(s1)
    运行结果:
    {123,456,789}

    4.pop 删除(无序删除,随机删除,不可指定删除)
    s = {123,456,789}
    s.pop()
    print(s)
    运行结果:
    {123, 789}

    5.remove 删除(可指定删除,元素不存在时会报错)
    s = {123,456,789}
    s.remove(789)
    print(s)
    运行结果:
    {456, 123}
    6.discard  删除(可指定删除,元素不存在时不会报错)

    3.集合的关系运算,交,差并集操作

    (1)求交集(需求在列表中找出既学python又学linux的人)

    python_1 = ["xiao","xing","ly"]
    linux_1 = ["ly","xing"]
    python_and_linux =[]
    for p_name in python_1:
    if p_name in linux_1:
    python_and_linux.append(p_name)
    print(python_and_linux)
    运行结果:
    ['xing', 'ly']

    学过集合后的操作
    python_1 = ["xiao","xing","ly"]
    linux_1 = ["ly","xing"]
    p_s =set(python_1)
    #set函数相当于,for循环遍历python_1这个列表,然后把列表中的元素依次放到集合当中,如果是重复就去除,最终生成p_s集合是无序的
    l_s = set(linux_1)
    print(p_s,l_s)
    print(p_s.intersection(l_s))
    print(p_s&l_s)
    运行结果:

    {'xing', 'xiao', 'ly'} {'xing', 'ly'}
    {'xing', 'ly'}
    {'xing', 'ly'}

    (2)求并集

    python_1 = ["xiao","xing","ly"]
    linux_1 = ["ly","xing","zx"]
    print(p_s.union(l_s))
    或者
    print(p_s|l_s)
    运行结果:
    {'zx', 'ly', 'xing', 'xiao'}

    (3)求差集

    python_1 = ["xiao","xing","ly"]
    linux_1 = ["ly","xing","zx"]
    print(p_s.difference(l_s))
    或者
    print('差集',p_s-l_s)
    运行结果:

       {'xiao'}
       差集 {'xiao'}

    (4)求交叉补集

    python_1 = ["xiao","xing","ly"]
    linux_1 = ["ly","xing","zx"]
    print(p_s.symmetric_difference(l_s))
    运行结果:
    {'xiao', 'zx'}

    (5)求完叉集再赋值给原来的值

    difference_update
    python_1 = ["xiao","xing","ly"]
    linux_1 = ["ly","xing","zx"]
    p_s =set(python_1)
    l_s = set(linux_1)
    #p_s = p_s - l_s
    #print(p_s)
    p_s.difference_update(l_s)
    print(p_s)
    运行结果:
    {'xiao'}
    difference_update先求差集,再将差集赋值给p_s

    (6)判断两个集合是否有交集,无则返回true

    s = {1,2,3}
    s1 = {4,5}
    print(s.isdisjoint(s1))
    运行结果:
    True

    (7)判断是否为其子集

    s1 = {1,2}
    s2 = {1,2,3}
    print(s1.issubset(s2))
    运行结果:
    true

    (8)判断是否为其父集

    s1 = {1,2}
    s2 = {1,2,3}
    print(s2.issuperset(s1))
    运行结果:
    true

    (9)更新多个值

    s1 = {1,2}
    s2 = {1,2,3}
    s1.update(s2)
    print(s1)
    运行结果:
    {1, 2, 3}

    (10)定义不可变集合

    s = frozenset('hello')
    print(s)
    运行结果:
    frozenset({'h', 'o', 'e', 'l'})
    再s.的时候发现无法添加,修改,删除操作

    (4)求完叉集再赋值给原来的值

  • 相关阅读:
    超全的IE兼容性问题及解决方案
    排序算法之冒泡排序
    Java集合框架之图解(更新中...)
    ProgressBar与Handler的整合应用
    构建一个自己的springBoot启动器
    浅谈JVM(上)
    什么是JUC以及基本线程的知识
    Zookeeper 注册中心安装
    Spring Cloud 之 链路追踪Sleuth和Zipkin,RabbitMQ整合(十七)
    Spring Cloud 之 链路追踪Sleuth和Zipkin整合(十六)
  • 原文地址:https://www.cnblogs.com/star520/p/9092220.html
Copyright © 2011-2022 走看看