• 15.set的操作


    1.作用

    去重,关系运算

    2.定义

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

    ​ ①每个元素必须是不可变类型

    ​ ②集合内没有重复元素

    ​ ③ 集合内元素无序

    注意点:

    d = {}	#默认是空字典
    s = set()	#空集合
    

    3.类型转换

    # 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型
    >>> s = set([1,2,3,4])
    >>> s1 = set((1,2,3,4))
    >>> s2 = set({'name':'jason',})
    >>> s3 = set('egon')
    >>> s,s1,s2,s3
    {1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'e', 'o', 'g', 'n'}
    

    4.使用

    >>> friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们 
    >>> friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们
    
    • 合集/并集(|):求两个用户所有的好友(重复好友只留一个)
    >>> friends1 | friends2
    {'kevin', 'ricky', 'zero', 'jason', 'Jy', 'egon'}
    
    • 交集(&):求两个用户共同的好友
    >>> friends1 & friends2
    {'jason', 'egon'}
    
    • 差集(-):
    >>> friends1 - friends2 # 求用户1独有的好友
    {'kevin', 'zero'}
    >>> friends2 - friends1 # 求用户2独有的好友
    {'ricky', 'Jy'}
    
    • 对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
    >>> friends1 ^ friends2
    {'kevin', 'zero', 'ricky', 'Jy'}
    
    • 值是否相等(==)
    >>> friends1 == friends2
    False
    
    • 父集:包含返回True,不包含返回False
    >>> {1,2,3} > {1,3,4,5}
    False
    >>> {1,2,3} >= {1,3,4,5}
    False
    
    • 子集
    >>> {1,2} < {1,2,3}
    True
    >>> {1,2} <= {1,2,3}
    True
    
    • 长度
    >>> s={'a','b','c'}
    >>> len(s)
    3
    
    • 成员运算
    >>> 'c' in s
    True
    
    • 循环
    >>> for item in s:
    ...     print(item)
    ... 
    c
    a
    b
    

    5.去重

    去重:只针对不可变类型

    ​ 集合本身是无序的,去充值后无法保留原来的顺序

    >>> l=['a','b',1,'a','a']
    >>> s=set(l)
    >>> s # 将列表转成了集合
    {'b', 'a', 1}
    >>> l_new=list(s) # 再将集合转回列表
    >>> l_new
    ['b', 'a', 1] # 去除了重复,但是打乱了顺序
    
    • 针对不可变类型,并且保证顺序则需要我们自己写代码实现
    l=[
        {'name':'lili','age':18,'sex':'male'},
        {'name':'jack','age':73,'sex':'male'},
        {'name':'tom','age':20,'sex':'female'},
        {'name':'lili','age':18,'sex':'male'},
        {'name':'lili','age':18,'sex':'male'},
    ]
    
    new_l=[]
    
    for dic in l:
        if dic not in new_l:
            new_l.append(dic)
    
    print(new_l)
    # 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
    [
        {'age': 18, 'sex': 'male', 'name': 'lili'}, 
        {'age': 73, 'sex': 'male', 'name': 'jack'}, 
        {'age': 20, 'sex': 'female', 'name': 'tom'}
    ]
    

    6.可变类型与不可变类型

    可变数据类型:值发生改变时,内存地址不变,即id不变,证明改变原值

    不可变类型:值发生改变时,内存地址发生改变,即id也变,证明是没有在改变原值,是产生了新的值

    • 按存值个数分
    只能存一个值:可称为标量/原子类型 数字、字符串
    可以存放多个值:可称为容器类型 列表、元组、字典、集合
    • 按照访问方式区分
    直接访问:只能通过变量名访问整个值 数字
    顺序访问:可以用索引访问指定的值,索引代表顺序,又称为序列类型 字符串、列表、元组
    key访问:可以用key访问指定的值,又称为映射类型 字典
    • 按照可变不可变区分
    可变类型 列表、字典
    不可变类型 数字、字符串、元组
  • 相关阅读:
    dojo学习
    在WindowsPhone中使用现有的Sqlite
    ArcGIS Runtime SDK for Windows Phone 入门教程
    HTML 相关技巧
    NetBeans 7安装Python 插件
    Tomcat
    MongoDB
    Ubuntu学习
    ArcGIS Server 10.1动态图层 以及Windows Phone/Silverlight客户端实现
    android应用崩溃的调试方法
  • 原文地址:https://www.cnblogs.com/Psc-mmf/p/13915660.html
Copyright © 2020-2023  润新知