zoukankan      html  css  js  c++  java
  • python 集合和深浅copy

    #1数据类型的补充
    #2.集合set
    #3.深浅copy

    补充:
    str --> bytes s.encode('gbk')
    bytes --> str s.decode('gbk')

    1.数据类型的补充.
    str :
    isspace 判断是不是空格.
    list:
      再循环一个列表时候,进行删除的动作时候,容易出错.一旦删除索引将会改变,所以才会报错
    1,反向删除
    2.增加替换
    3.增加删除,两个for循环
    4.步长删除.
    li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
    dict:
    由于索引和无序的原因,对字典进行循环增删的时候会报错,单独建立一个列表,将要删除的元素单独列到列表中,再进行字典删除,才能避免报错。

    元祖:
    str --> 元祖 强行转化
    元祖 --> str ''.join(tuple) #所有可迭代的对象都能够转化为str,利用join


    2.集合(set)
    set = {11,22,33,44,55}
    主要两个大功能:
    1,由于集合自动去重复的功能,转化为set后能够直接去掉重复的内容
    2.集合交集并集差集超集子集
    1 set = {2,4,6,8,9,1,3,9,7}
    2 set2 = {11,12,13,15,16,17}
    3 
    4 print(set & set2)#交集
    5 print(set ^ set2)#反交集
    6 print(set | set2)#并集
    7 print(set - set2)#差集
    8 print(set.issubset(set2))#子集
    9 print(set.issuperset(set2))#超集
    

      #增:

            #add添加元素,
    set = {2,4,6,8,9,1,3,9,7}
    set2 = {11,12,13,15,16,17}
    
    set.add('w')
    print(set)
    #{1, 2, 3, 4, 6, 7, 8, 9, 'w'}

    #update 迭代添加
    set = {2,4,6,8,9,1,3,9,7}
    set.update('wsb')
    print(set)
    #{1, 2, 3, 4, 6, 7, 8, 9, 's', 'b', 'w'}



    #删:
    #pop() 无需随机删除(不确定)
    set = {2,4,6,8,9,1,3,9,7}
    set.pop()
    print(set)
    #{2, 3, 4, 6, 7, 8, 9}

    #clear()清空如同列表和字典

    #del ()整个删除

    #remove() 元素删除
    1 set = {2,4,6,8,9,1,3,9,7}
    2 
    3 set.remove(2)
    4 
    5 print(set)
    6 
    7 #{1, 3, 4, 6, 7, 8, 9}

          #无法修改

    #查

            #for 循环查看




    3.深浅copy
    赋值运算:
    1 l1 = [1,2,3]
    2 
    3 l2 = l1
    4 
    5 l2.append(111)
    6 
    7 print(l1,l2)
    8   结果相同

    浅copy:

    1 l1 = [1,2,[1,2,3],3]
    2 
    3 l2 = l1[:]/l1.copy
    4 
    5 l2[2].append(111)
    6 
    7 l2.append(111)
    8 
    9 print(l1,l2)
         
    此时是浅copy 不是赋值运算.

    深copy:
    1 import copy
    2 
    3 l1 = [1,2,[1,2,3],3]
    4 
    5 l2 = copy.deepcopy(l1)
    6 
    7 l2[2].append(111)
    8 
    9 print(l1,l2)

    赋值运算是完全公用内存地址
    浅copy是在第一层不会公用地址,而在多层的情况下除开第一层,其它层都会公用一个内存地址
    深copy则是完全独立的一个新的储存位置,不会公用地址.
  • 相关阅读:
    图表算法—有向图
    图表算法—无向图
    搜索算法—哈希表
    红黑树的删除
    搜索算法—红黑树
    搜索算法—二叉搜索树
    排序算法—堆排序
    快速排序改进——3区快速排序(3-way quicksort)
    数论——约数:算数基本定理及推论,欧几里得算法
    数论——乘法逆元(快速幂求法)及模运算
  • 原文地址:https://www.cnblogs.com/wpcbk/p/8652204.html
Copyright © 2011-2022 走看看