zoukankan      html  css  js  c++  java
  • python 基础数据类型补充,set集合,深浅拷贝

    一,基础数据类型补充

    对于join的使用

    还有split的使用

    lst = ['黄飞鸿','霍元甲','十三姨','鬼脚七']
    s = '*'.join(lst)
    print(s)
    s1 = s.split("*")
    print(s1)
    

     

    关于删除列表和删除字典的问题

    注意: 由于删除元素会导致元素的索引改变, 所以容易易出现问题. 尽量量不要再循环中直接去删
    除元素. 可以把要删除的元素添加到另⼀一个集合中然后再批量量删除.

    # # for i in range(0,len(lst)):
    # #     lst.pop()
    # # print(lst)
    li = [11,12,13]
    del_li = []
    for e in li:
        del_li.append(e)
    for s in  del_li:
        li.remove(s)
    print(li)
    

      

    dic = {'k1':'alex','k2':'wusir','k3':'金老板'}
    lst = []
    for k in dic:
        if 'k' in k:
            lst.append(k)
    for el in lst:
        del dic[el]
    print(dic)
    

    fromkeys

    dic = dict.fromkeys(['jay','jj'],['周杰伦','马化腾'])
    print(dic)
    dic['jay'].append('胡大')
    print(dic)
    

      

    类型转换:
    元组 => 列列表 list(tuple)
    列列表 => 元组 tuple(list)
    list=>str str.join(list)
    str=>list str.split()
    转换成False的数据:
    0,'',None,[],(),{},set() ==> False

    二 set集合

    set集合是python的⼀一个基本数据类型. ⼀一般不是很常⽤用. set中的元素是不重复的.⽆无序的.⾥里里
    ⾯面的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但
    是不保存value, 只保存key. set也⽤用{}表⽰示
    注意: set集合中的元素必须是可hash的, 但是set本身是不可hash得. set是可变的.

    set中的元素是不重复的, 且⽆无序的.注意列表和字典都不可以

    使⽤用这个特性.我们可以使⽤用set来去掉重复

    lst = [45,5,'哈哈',45,'哈哈']
    lst = list(set(lst))
    print(lst)
    

      set的增删改查

    1增加

    add和upade

    s = {'刘嘉玲','关之琳','王祖贤'}
    s.update('马化腾')
    print(s)
    s.update(['张曼玉','李若彤','李若彤'])
    print(s)
    

     2 删除

    pop

    remove

    clear

    s = {'刘嘉玲','关之琳','王祖贤'}
    # item = s.pop()
    # # print(s)
    # # print(item)
    # s.remove('关之琳')
    # print(s)
    # s.clear()
    # print(s)
    

      

    3修改

    先删除后添加

    s = {'刘嘉玲','关之琳','王祖贤'}
    s.remove('刘嘉玲')
    s.add('赵本山')
    print(s)
    

      

    4查询

    for 循环

    5常见操作

    交集和并集

    s1 = {"刘能", "赵四", "⽪皮⻓长⼭山"}
    s2 = {"刘科⻓长", "冯乡⻓长", "⽪皮⻓长⼭山"}
    # print(s1& s2)
    # print(s1.intersection(s2))
    print(s1|s2)
    print(s1.union(s2))
    

      

    # 差集
    print(s1 - s2) # {'赵四', '刘能'} 得到第⼀一个中单独存在的
    print(s1.difference(s2)) # {'赵四', '刘能'}
    # 反交集
    print(s1 ^ s2) # 两个集合中单独存在的数据 {'冯乡⻓长', '刘能', '刘科⻓长', '赵四'}
    print(s1.symmetric_difference(s2)) # {'冯乡⻓长', '刘能', '刘科⻓长', '赵四'}
    s1 = {"刘能", "赵四"}
    s2 = {"刘能", "赵四", "⽪皮⻓长⼭山"}
    # ⼦子集
    print(s1 < s2) # set1是set2的⼦子集吗? True
    print(s1.issubset(s2))
    # 超集
    print(s1 > s2) # set1是set2的超集吗? False
    print(s1.issuperset(s2))
    

      set集合本身是可以发生改变的.是不可哈希的,我们可以使用frozenset来保存数据.

    frozenset是不可变的,也就是一个可哈希的数据类型

    s = frozenset(['赵本山','刘能','皮长山','长跪'])
    dic = {s:'123'}
    print(dic)
    

      三深浅拷贝

    浅拷贝

    一层拷贝

    深拷贝

    多层拷贝

    import copy
    lst1 = ['何炅','谢娜','杜海涛',['马化腾','马云']]
    lst2 = copy.deepcopy(lst1)
    lst1[3].append('无敌是多么寂寞')
    print(lst1)
    print(lst2)
    print(id(lst1[3]),id(lst2[3]))
    

      深度拷⻉贝. 把元素内部的元素完全进⾏行行拷⻉贝复制. 不会产⽣生⼀一个改变另⼀一个跟着
    改变的问题

  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/lnrick/p/9150873.html
Copyright © 2011-2022 走看看