zoukankan      html  css  js  c++  java
  • Python学习

    1、集合:

      集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

        a)去重,把一个列表变成集合,就自动去重了。

        b)关系测试,测试两组数据之前的交集、差集、并集等关系。

    2、集合的创建

    set1 = set({1,2,'barry'})
    set2 = {1,2,'barry'}
    print(set1,set2)
    # {1, 2, 'barry'} {1, 2, 'barry'}

    3、集合的增(add,update)

      add:随机添加

    set1 = {'罗伊人','林拜','熊青春','白力勤','陈香'}
    set1.add('郑秋冬')
    print(set1)

      update:迭代增加,随机

    set1 = set()
    set1.update('郑秋冬')
    print(set1)
    set1.update(['罗伊人','熊青春','贾衣玫'])
    print(set1)

    4、集合的删(remove(),pop(),clear(),del)

    set1 = {'郑秋冬','罗伊人','熊青春','贾衣玫','林拜','白力勤','袁昆'}
    
    set1.remove('白力勤')
    print(set1)
    
    print(set1.pop(),set1)
    
    set1.clear()
    print(set1)
    
    del set1
    print(set1)

    5、集合的查(for循环)

    set1 = {'郑秋冬','罗伊人','熊青春','贾衣玫','林拜','白力勤','袁昆'}
    
    for i in set1:
        print(i)

    6、集合的其他操作

      1)交集( & intersection)

    set1 = {'郑秋冬','罗伊人','熊青春','贾衣玫','林拜','白力勤','袁昆'}
    set2 = {'罗伊人','熊青春','贾衣玫','冯眷眷','周淮兰','简娜','周霜荷'}
    print(set1 & set2)
    print(set1.intersection(set2))
    
    # {'罗伊人', '熊青春', '贾衣玫'}

      2)并集( | union)

    set1 = {'郑秋冬','罗伊人','熊青春','贾衣玫','林拜','白力勤','袁昆'}
    set2 = {'罗伊人','熊青春','贾衣玫','冯眷眷','周淮兰','简娜','周霜荷'}
    
    print(set1 | set2)
    print(set1,set2,set2.union(set1))

      3)差集( - difference)

    set1 = {'郑秋冬','罗伊人','熊青春','贾衣玫','林拜','白力勤','袁昆'}
    set2 = {'罗伊人','熊青春','贾衣玫','冯眷眷','周淮兰','简娜','周霜荷'}
    
    print(set1 - set2)
    print(set1.difference(set2))

      4)反交集( ^ symmetric_difference)

    set1 = {'郑秋冬','罗伊人','熊青春','贾衣玫','林拜','白力勤','袁昆'}
    set2 = {'罗伊人','熊青春','贾衣玫','冯眷眷','周淮兰','简娜','周霜荷'}
    
    print(set1 ^ set2)
    print(set1.symmetric_difference(set2))

      5)子集与超级

    set1 = {'罗伊人','熊青春','贾衣玫'}
    set2 = {'罗伊人','熊青春','贾衣玫','冯眷眷','周淮兰','简娜','周霜荷'}
    
    print(set1 < set2)
    print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    
    print(set2 > set1)
    print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

      6)frozenset不可变集合,让集合变成不可变类型。

    s = frozenset('barry')
    print(s,type(s))

    7、深浅copy

      1)赋值运算

        对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

    l1 = [1,2,3,['barry','alex']]
    l2 = l1
    
    l1[0] = 111
    print(l1)  # [111, 2, 3, ['barry', 'alex']]
    print(l2)  # [111, 2, 3, ['barry', 'alex']]
    
    l1[3][0] = 'wusir'
    print(l1)  # [111, 2, 3, ['wusir', 'alex']]
    print(l2)  # [111, 2, 3, ['wusir', 'alex']]

      2)浅拷贝copy

        对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

    l1 = [1,2,3,['barry','alex']]
    l2 = l1.copy()
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2794248428424
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2794248428616
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2794248428424
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2794248428680
    print(l2,id(l2[3]))  # [1, 2, 3, ['wusir', 'alex']] 2794248428680

      3)深拷贝deepcopy

        对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

    import copy
    l1 = [1,2,3,['barry','alex']]
    l2 = copy.deepcopy(l1)
    
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2792837924552
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2792837926088
    
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2792837924552
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2792837926088
    
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2792837897224
    print(l2,id(l2[3]))  # [1, 2, 3, ['barry', 'alex']] 2792837935496
  • 相关阅读:
    Spring Cloud Hystrix Dashboard的使用 5.1.3
    Spring Cloud Hystrix 服务容错保护 5.1
    Spring Cloud Ribbon 客户端负载均衡 4.3
    Spring Cloud 如何实现服务间的调用 4.2.3
    hadoop3.1集成yarn ha
    hadoop3.1 hdfs的api使用
    hadoop3.1 ha高可用部署
    hadoop3.1 分布式集群部署
    hadoop3.1伪分布式部署
    KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/9353140.html
Copyright © 2011-2022 走看看