• day8:列表相关函数&深浅拷贝&字典相关函数&集合相关操作/函数


    字符串/列表/字典/集合 目录

    字符串相关操作: 拼接 重复 跨行拼接 索引 切片
    字符串相关函数:常规11+is系列3+填充去除6+最重要3
    字符串拓展:字符串的格式化format

    列表的相关操作:拼接 重复 切片 索引 修改 删除
    列表相关函数:增3+删3+其他4
    列表拓展:深浅拷贝

    字典相关函数:增1/1+删3+改1/1+查1+最重要3

    集合相关操作:交集 差集 并集 对称差集 子集 父集
    集合相关函数:操作7+增2+删4

    列表相关的函数(增3+删3+其他4)

    lst= ['Mike']
    # 增 append insert extend
    
    # append 向列表的末尾添加新的元素
    lst.append("Jenny")
    print(lst)
    
    # insert 向指定索引之前插入元素
    lst.insert(0,"Alan")
    lst.insert(2,"Cat")
    print(lst)
    
    # extend 迭代追加所有元素
    '''要求:数据的类型必须是可迭代性数据'''
    strvar = "abcde"
    lst.extend(strvar)
    print(lst)
    # 删 pop remove clear
    
    # pop 通过指定索引删除元素,若没有索引则移除最后那个
    lst=["Fly","Hurt","Cat","Alan","Yang"]
    # 指定索引进行删除
    res = lst.pop(1)
    # 默认没有任何参数,删除的是最后一个
    res = lst.pop()
    print(res)
    print(lst)
    
    # remove 通过给予的值来删除,如果多个相同元素,默认删除第一个
    lst=["Fly","Hurt","Cat","Alan","Yang"]
    # 指定值进行删除,如果有多个相同的重复值,默认删掉第一个
    lst.remove("Alan")
    print(lst)
    
    # clear 清空列表
    lst=["Fly","Hurt","Cat","Alan","Yang"]
    lst.clear()
    print(lst)
    # 其他函数 index count sort reverse
    lst=["Fly","Fly","Fly","Fly","Hurt","Cat","Alan","Yang"]
    
    # index 获取某个值在列表中的索引
    '''列表.index(值,[,start],[,end]) 表达参数可选项 找不到报错''' 
    res = lst.index("Hurt")
    res = lst.index("Hurt",3)
    res = lst.index("Hurt",2,4)
    print(res)
    
    # count 计算某个元素出现的次数
    res = lst.count("Fly")
    print(res)
    '''
    注意:字符串里的count可以划定范围,列表里面的count不行
    '''
    strvar = "aaaaabcdefg"
    res = strvar.count("a",1,6)
    print(res)
    
    # sort() 列表排序(默认小到大排序)
    # 默认从小到大
    lst=[3,8,26,9,-25,-1,7]
    lst.sort()
    # 从小到大排序
    lst.sort(reverse=True)
    print(lst)
    # 排序英文------> ASCII编码
    '''一位一位进行比较,在第一次相同的情况下,比较第二位,以此类推'''
    lst=["Cow","Fly","Hurt","Cat","Alan","Yang"]
    lst.sort()
    print(lst)
    # 也可以对中文排序-------> 但是无规律可循
    lst = ["王添龙","陈正正","夏圣钦","万潇阳","彭云飞"]
    lst.sort()
    print(lst)
    
    # reverse() 列表反转操作
    lst = ["王添龙","陈正正","夏圣钦","万潇阳","彭云飞"]
    lst.reverse()
    print(lst)

    深浅拷贝

    1.浅拷贝

    # 1.浅拷贝
    import copy
    lst1=[1,2,3]
    
    # 方法一:copy.copy 模块.方法
    lst2 = copy.copy(lst1)
    lst1.append(4)
    print(lst1) #[1, 2, 3, 4]
    print(lst2) #[1, 2, 3]
    
    # 方法二:列表.copy()
    lst1 = [1,2,3,4]
    lst3 = lst1.copy()
    lst1.insert(0,0)
    print(lst1) # [0, 1, 2, 3, 4]
    print(lst3) # [1, 2, 3, 4]

    2.深拷贝

    # 引入深拷贝(浅拷贝无法满足需求)
    lst1 = [1,2,3,[4,5,6]]
    lst2 = copy.copy(lst1)
    lst1[-1].append(7)
    lst1.append(100)
    print(lst1) # [1, 2, 3, [4, 5, 6, 7], 100]
    print(lst2) # [1, 2, 3, [4, 5, 6, 7]]
    
    # deepcopy 深拷贝
    lst1 = [1,2,3,[4,5,6]]
    lst2 = copy.deepcopy(lst1)
    # lst1[-1].extend("ab")
    print(lst2) # [1,2,3,[4,5,6]]
    print(lst1) # [1,2,3,[4,5,6]]
    
    print(id(lst2[-1])) # 2731177062472
    print(id(lst1[-1])) # 2731177036872
    
    print(id(lst1[0])) # 1347321968
    print(id(lst2[0])) # 1347321968
    
    lst2[0] = 11
    print(id(lst1[0])) # 1347321968
    print(id(lst2[0])) # 2390383439568

    3.关于深浅拷贝的总结:

    (1)浅拷贝只拷贝一级容器中的所有数据
    (2)深拷贝拷贝所有层级的所有元素
    浅拷贝速度比深拷贝速度快
    深拷贝在执行时: 如果是不可变数据,地址会暂时的指向原来数据,
    如果是可变数据,直接开辟新空间
    不可变数据: Number str tuple
    可变数据 : list set dict

    字典相关函数(增1/1+删3+改1/1+查1+最重要3)

    # 增 dic[键]=值 fromkeys
    dic={}
    dic["Top"] = "Fly"
    dic["Mid"] = "Mojo"
    dic["Support"] = "Snow"
    print(dic)
    
    # fromkeys() 使用一组键和默认值创建字典
    lst=["Top","Jungle","Bottom"]
    dic={}.fromkeys(lst,None)
    print(dic)
    
    # 注意点:三个键所指向的列表是同一个(不推荐)
    '''dic = {}.fromkeys(lst,[])'''
    # 删 pop popitem clear
    # pop() 通过键去删除键值对(若没有该键可设置默认值,预防报错)
    dic={"Top":"Fly","Bottom":"Hurt","Jungle":"Giao","Mid":"Mojo","Support":"Snow"}
    res = dic.pop("Top")
    # 1.如果删除的是不存在的键,直接报错
    res = dic.pop("King")
    # 2.可以设置默认值,防止报错
    res = dic.pop("King","没有这个键")
    print(res)
     
    # popitem() 删除最后一个键值对
    res = dic.popitem()
    print(res,dic)
    
    # clear() 清空字典
    dic.clear()
    print(dic)
    # 改 update
    # update() 批量更新(有该键就更新,没该键就添加)
    dic1={"Top":"Fly","Bottom":"Hurt","Jungle":"Giao"}
    dic2={"Top":"JieJ","Support":"770","Jungle":"Giao"}
    
    # 方法一(推荐)
    dic1.update(dic2)
    print(dic1)
    
    # 方法二
    dic1.update(coach="SK",teacher="Bao")
    print(dic1)
    # 查 get
    #get() 通过键获取值(若没有该键可设置默认值,预防报错)
    dic={"Top":"Fly","Bottom":"Hurt","Jungle":"Giao"}
    res = dic.get("Top")
    res = dic.get("Coach")
    res = dic.get("Coach","没有这个键")
    print(res)
    # 最重要 keys values items
    dic={"Top":"Fly","Bottom":"Hurt","Jungle":"Giao"}
    #keys()   将字典的键组成新的可迭代对象
    res = dic.keys()
    print(res)
    
    #values() 将字典中的值组成新的可迭代对象
    res = dic.values()
    print(res)
    
    #items()  将字典的键值对凑成一个个元组,组成新的可迭代对象 
    res = dic.items()
    print(res)

    集合的相关操作

    set1={"Chuchen","Yinuo","JiuC","Cat"}
    set2={"15sui","SK","Dgc","Cat"}
    
    # 交集简写 & 
    res = sey1 & set2
    print(res)
    
    # 差集简写 -
    res = set1 - set2
    print(res)
    
    # 并集简写 |
    res = set1 | set2
    print(res)
    
    # 对称差集简写 ^
    res = set1 ^ set2
    print(res)
    
    # 判断是否是子集简写 < 
    res = set1 < set2
    print(res)
    
    # 判断是否是父集简写 > 
    res = set1 > set2
    print(res)

    集合的相关函数(操作7+增2+删4)

    set1={"Chuchen","Yinuo","JiuC","Cat"}
    set2={"15sui","SK","Dgc","Cat"}
    
    # intersaction() 交集
    res = set1.intersaction(set2)
    print(res)
    
    #difference() 差集  
    res = set1.difference(set2)
    print(res)
    
    #union() 并集     
    res = set1.union(set2)
    print(res)
    
    #symmetric_difference() 对称差集 (补集情况涵盖在其中) 
    res = set1.symmetric_difference(set2)
    print(res)
    
    #issubset() 判断是否是子集
    set1 = {"Fly","JieJ","Nuoyan","Orange"}
    set2 = {"Fly","JieJ"}
    res = set1.issubset(set2)
    
    #issuperset() 判断是否是父集
    res = set1.issuperset(set2)
    print(res)
    
    #isdisjoint() 检测两集合是否不相交  不相交为True  相交为False
    res = set1.isdisjoint(set2)
    print(res)
    set2 = {"Fly","JieJ"}
    
    # 增 add update
    # add() 向集合中添加数据(一次加一个)
    setvar.add("Djie")
    print(setvar)
    # update() 迭代着增加 (一次加一堆)
    strvar = ("Ache","Yuyu")
    setvar.update(strvar)
    print(setvar)
    # 删 clear pop remove discard 
    set2 = {"Fly","JieJ","Rxy"}
    # clear() 清空集合
    set2.clear()
    
    # pop() 随机删除集合中的一个数据
    res = set2.pop()
    print(res,set2)
    
    # remove() 删除集合中指定的值(不存在则报错)(了解)
    setvar.remove("Fly")
    print(setvar)
    
    # discard() 删除集合中指定的值(不存在的不删除)(推荐使用)
    set2.discard("Fly")
    set2.discard("Sehah")
    print(set2)

    冰冻集合(frozenset)

    # ### 冰冻集合 frozenset
    # frozenset 可强转容器类型数据变为冰冻集合
    lst1 = ["Fly","Mojo","Hurt","770"]
    fz1 = frozenset(lst1)
    lst2 = ("Amy","Mike","Lucy")
    fz2 = frozenset(lst2)
    print(fz1 , type(fz1))
    print(fz2 , type(fz2))
    
    # 不能够在冰冻集合当中添加或者删除元素
    fz1.add("Marry") # error
    
    # 只能交差并补
    print(fz1 & fz2)
    print(fz1 - fz2)
  • 相关阅读:
    IbatisNet 快速开发使用 之一
    C#开发和调用Web Service
    如何构建银行数据仓库
    SQLSREVER如何创建和使用动态游标
    一个sql语句,包含有几乎所有标准查询语法
    深入研究SQL结构化查询语言中的LIKE语句
    数据库正规化和设计技巧
    黑客攻破SQL服务器系统的十种方法
    实用的存储过程
    数据库人员手边系列:SQL Server常见连接错误
  • 原文地址:https://www.cnblogs.com/libolun/p/13303250.html
Copyright © 2020-2023  润新知