zoukankan      html  css  js  c++  java
  • python-day7

    一. 基础数据部分的补充

      1. join: 把列表中的数据进行拼接,拼接成字符串

    lit = ['alex','wusir','ritian','taiabai']
    s = "_".join(lit) #把列表拼接起来, split()相反
    print(s)
    
    #效果一样
    # s = ''
    # for i in lit:
    #     s += i + '_'
    # print(s.strip("_"))
    View Code

      2. 关于删除

        列表和字典循环的时候都不能删除

    1 ls = [1,2,3,4]
    2 # ls.clear()#清空列表
    3 # print(ls)
    4 
    5 for i in ls:
    6     ls.remove(i)
    7 print(ls)#删除不彻底,因为每次删除都会导致元素的移动,每次更新一次索引
    View Code

        把要删除的内容保存到新列表中,循环新列表,删除旧列表(字典)

    1 ls = [1,2,3,4]
    2 new_li = []
    3 for i in ls:
    4     new_li.append(i)
    5 # 循环新列表,删除原来的列表
    6 for c in new_li:#不会导致循环的列表的元素移动问题
    7     ls.remove(c)#,删除的是老列表
    8 print(ls)
    View Code

      3. fromkeys

        dic.fromkey(iter,value)

        把可迭代对象进行迭代,和后面的value组成键值对返回新字典

        1.返回新字典,不会改变原来的字典

    1 dic = {}
    2 new_dic = dic.fromkeys('x23','xxx')
    3 print(dic)    #打印原来的字典
    4 print(new_dic)#新字典
    View Code

        2,字典中所有的value都是同一内容

    1 dic = {'a':'1','b':'2','c':'3'}
    2 d = dic.fromkeys('x12',[])
    3 print(d)
    4 print(dic)
    View Code

        3. frozenset 可哈希的集合,不可变.

         s = forzenset([ 1,2,3,4,5 ])

         print(id(s))

    二. set集合

      set特点:无序不重复,内部元素必须可哈希(不可变)

    1 s = {1,2,(3,4,5,6),'abc'}#本身可变,不可哈希,但是内部元素是不可变的
    2 print(type(s))
    3 s.remove(2)   #删除指定元素
    4 s.add(66)   #添加指定元素
    5 s.pop()     #随机删除元素,pop()不能指定删除
    6 #集合不能修改,只能删除之后再添加
    7 # list -> tuple
    8 # set -> frozenset
    9 print(s)
    View Code

      frozenset可哈希的集合,不可变

    1 s = frozenset([1,2,3,4,5])
    2 print(type(s))#<class 'frozenset'>
    3 for i in s:
    4     print(i)
    View Code

    三. 深浅拷贝

       ' = ' 没有产生新对象都是内存地址的赋值

    1 lst1 = ['孙悟空','贝吉塔']
    2 lst2 = lst1
    3 lst1.append('短笛')
    4 print(lst1)
    5 print(lst2)
    6 print(id(lst1),id(lst2))
    View Code

      浅拷贝copy(),  [ : ]  #拷贝第一层内容

        优点:省内存

        缺点:容易出现同一对象被多个变量所引用

     1 lst1 = ['孙悟空','贝吉塔',['七龙珠']]
     2 # lst2 = lst1[:]
     3 # lst1.append('短笛')
     4 # print(lst1,lst2)
     5 # print(id(lst1),id(lst2))
     6 
     7 lst2 = lst1.copy()
     8 # lst1.append('短笛')
     9 lst1[2].append('短笛')
    10 print(lst1,lst2)
    11 print(id(lst1[2]),id(lst2[2]))
    View Code

      深拷贝

        优点:完全拷贝一份

        缺点:占内存

        import copy

        copy.deepcopy()深度拷贝,把对象内部的所有内容都拷贝一份

    1 import copy
    2 lst1 = ['孙悟空','贝吉塔','卡卡罗特',['七龙珠','战斗陀螺']]
    3 lst2 = copy.deepcopy(lst1)#会把这个对象相关的内部信息全部复制一份
    4 lst1[3].append('wqer')
    5 print(lst1,lst2)
    6 print(id(lst1),id(lst2))
    View Code

      共同点:作用创建对象   >>>>> 原型模式(设计模式)

      

  • 相关阅读:
    OSPF
    【今日CS 视觉论文速览】 24 Jan 2019
    【今日CS 视觉论文速览】Wed, 23 Jan 2019
    【今日CS 视觉论文速览】 21 Jan 2019
    【Processing学习笔记】安装与入门
    【今日CS 视觉论文速览】Part2, 18 Jan 2019
    【今日CS 视觉论文速览】Fri, 18 Jan 2019
    【今日CS 视觉论文速览】Thu, 17 Jan 2019
    【今日CS 视觉论文速览】Part2, 16 Jan 2019
    【今日CS 视觉论文速览】Wed, 16 Jan 2019
  • 原文地址:https://www.cnblogs.com/Thui/p/9849971.html
Copyright © 2011-2022 走看看