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]))
    

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

  • 相关阅读:
    20个软件开发常用设计文档大全下载
    php短信接口(基于商麦无限)
    PHP与ajax,无刷新表单提交
    解决GD中文乱码问题
    php中json_decode()和json_encode()的使用方法
    一些页面自动跳转的实现
    已损坏文档修复
    php中从结果集获取一条数据和所有数据的方法函数
    VIM 用法小记
    PHP与JavaScript下的Cookie操作
  • 原文地址:https://www.cnblogs.com/lnrick/p/9150873.html
Copyright © 2011-2022 走看看