zoukankan      html  css  js  c++  java
  • 基本数据类型--------------------集合set()

    一.作用:集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:关系运算、去重

    # 1.1 关系运算
    friends1 = ["zero","kevin","jason","egon"]
    friends2 = ["Jy","ricky","jason","egon"]
    
    l=[]
    for x in friends1:
        if x in friends2:
            l.append(x)
    print(l)
    

    二.定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:

    1:每个元素必须是不可变类型
    set1={1,5,{'name':'lxx','age':18}}#报错,包含字典是可变类型
    2:集合内没有重复的元素
    set1={1,5,6,8,'hehe'}
    3:集合内元素无序
    >>> set1={15,9,6,8,'hehe'}
    >>> set1
    {6, 8, 9, 15, 'hehe'}
    

    集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。

    三.类型转换:凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型

    >>> s1=set('aaa')#字符串
    >>> s2=set([1,5,6])#列表
    >>> s3=set({'name':'dsz'})#字典
    >>> s4=set((1,5,6,8))#元祖
    >>> s1,s2,s3,s4
    ({'a'}, {1, 5, 6}, {'name'}, {8, 1, 5, 6})
    

    四.使用:

    friends1 = {"zero","kevin","jason","egon"}
    friends2 = {"Jy","ricky","jason","egon"}
    1.取交集,两者共同的好友
     >>> friends1 & friends2
    {'egon', 'jason'}
    2.2 取并集/合集:两者所有的好友
    >>> friends1 | friends2
    {'zero', 'kevin', 'egon', 'ricky', 'Jy', 'jason'}
    3.取差集:取各自独有的好友
    >>> friends1 - friends2#friends1独有的好友
    {'kevin', 'zero'}
    >>> friends2 - friends1#friends2独有的好友
    {'ricky', 'Jy'}
    4.对称差集: 求两个用户独有的好友们(即去掉共有的好友)
    >>> friends1 ^ friends2
    {'zero', 'kevin', 'ricky', 'Jy'}
    5.父子集:包含的关系
    >>> s1={1,5,6,8,9}
    >>> s2={1,5,6}
    >>> s1 > s2  #当s1大于s2时,才能说s1是s2父集,s2为子集,如果相等时互为父子
    True
    

    去重:

    1. 只能针对不可变类型
    >>> set([1,1,1,1,2])
    {1, 2}
    2. 集合本身是无序的,去重之后无法保留原来的顺序
    >>> l=[1,'a','b','z',1,1,1,2]
    >>> l=list(set(l))
    >>> l
    [1, 2, 'b', 'a', 'z']
    

    其他操作:

    1.长度
    2.成员运算
    3.循环

    其他内置方法:
    s={1,2,3}
    需要掌握的内置方法1:discard
    s.discard(4) # 删除元素不存在do nothing
    print(s)
    s.remove(4) # 删除元素不存在则报错
    
    
    需要掌握的内置方法2:update
    s.update({1,3,5})
    print(s)
    
    需要掌握的内置方法3:pop
    res=s.pop()
    print(res)
    
    需要掌握的内置方法4:add
    s.add(4)
    print(s)
    
    其余方法全为了解
    res=s.isdisjoint({3,4,5,6}) # 两个集合完全独立、没有共同部分,返回True
    print(res)
    
    了解
    s.difference_update({3,4,5}) # s=s.difference({3,4,5})
    print(s)
    
  • 相关阅读:
    axios的兼容性
    js中的特殊符号含义
    div垂直居中
    HTTP协议(一):介绍
    HTTP协议(二)header标头说明
    AJAX 状态值(readyState)与状态码(status)详解
    Javascript替代eval方法
    vue基础知识之vue-resource/axios
    ES6的export与Nodejs的module.exports
    PM2来部署nodejs服务器永久开启
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/12482408.html
Copyright © 2011-2022 走看看