浅谈python的深浅拷贝以及fromkeys的用法

  

        # lst=(“亚历克斯”,“双边带”、“wusir”,“xsb”)   # s=" . join (lst)   #打印(s) # alexdsbwusirxsb      


  需要把字符串转换成列表分裂
  把列表转化为字符串加入

        # s=癮lex_dsb_wusir_xsb”   # lst=s.split(“_”) #列表   #打印(lst)      

        . join(“#打印(“*”周润发”))#用迭代的方式进行拼接   # #周*润*发      

        # lst=["篮球”、“排球”,“乒乓球”,“足球”、“电子竞技”,“台球”)   # lst的el:   # lst.remove (el)   #打印(lst) #['排球”,“足球”、“台球”)      

会发现删不干净原因是:删除一个。元素的索引重新排的序,为循环向后走一个,就漏掉一个
  删掉了索引是0的元素,然后索引是1的元素补充到索引为0的位置上,然后索引指向1,
  就漏掉了以前的索引为1的元素因为索引为一的元素在第二次循环的时候已经掉到了索引0的位置
  正确的删除操作:

        # lst=["篮球”、“排球”,“乒乓球”,“足球”、“电子竞技”,“台球”)   #我的范围(len (lst)): # 0, 1, 2, 3, 4   # lst.pop (0)   #打印(lst) #[] #永远删索引是0元素   #我的范围(len (lst)):   # lst.pop ()   #打印(lst) #[] #从最后一个删      

最合理的删除方法:
  1、先把需要删除的元素写在一个新的列表中
  2 .循环这个新列表,删除老列表

  


  fromkeys()帮我们创建字典用
  #把第一个参数进行迭代拿到的每一项作为关键和后面组的值成字典

        # d=dict.fromkeys(“张无忌”,“赵”敏)#创建字典   #打印(d) #{“张”:“赵敏”,“无”:“赵敏”、“忌”:“赵敏”}      

坑1
  #返回新字典,和原来的字典没有关系

        # dic={}   # d=dic.fromkeys(“风扇哥”,“很困”)   #打印(dic) # {}   #打印(d) #{“风”:“很困”、“扇”:“很困的,“哥”:“很困'}      

#坑2
  

  

#如果价值是可变的数据类型,
  #那么其中一个关键的对应的价值执行更改操作,其他的也跟着改变

        d=dict.fromkeys(“胡辣汤”,[])   打印(d) #{‘胡’:[],“辣”:[],“汤”:[]}   #打印(id (d["胡"]))# 1797375051912   #打印(id (d["辣"]))# 1797375051912   #打印(id (d(“汤”)))# 1797375051912   #说明这几个还是同一个[]所以对其中一个进行改变别的也进行相应的改变   # d(“胡”).append(“湖南特色”)   #打印(d) #{“胡”:[湖的南特色的),“辣”:[湖的南特色的),“汤”:[湖的南特色的]}      


  先来看一下这个问题
  从上到下只有一个列表创建

        # lst1=["胡辣汤”、“麻辣香锅”、“灌汤包”,“油泼面”)   # lst2=lst1 #并没有产生新对象。只是一个指向(内存地址)的赋值   #打印(id (lst1)) # 2253612239048   #打印(id (lst2)) # 2253612239048   # lst1.append(“葫芦娃”)   #打印(lst1) #['胡辣汤”、“麻辣香锅”、“灌汤包”,“油泼面”、“葫芦娃”)   #打印(lst2) #['胡辣汤”、“麻辣香锅”、“灌汤包”,“油泼面”、“葫芦娃”)      

用图来解释

  

浅谈python的深浅拷贝以及fromkeys的用法

        # lst1=["胡辣汤”、“麻辣香锅”、“灌汤包”,“油泼面”)   # lst2=lst1.copy() #拷贝,抄作业,可以帮我们创建新的对象,和原来一模一样,浅拷贝   #打印(id (lst1)) # 2232732993736   #打印(id (lst2)) # 2232732993672   #   # lst1.append(“葫芦娃”)   #打印(lst1)   #打印(lst2)      

用图来解释

  

浅谈python的深浅拷贝以及fromkeys的用法

        # lst1=["胡辣汤”、“灌汤包”,“油泼面”,“麻辣香锅”,(“长白山”,“白洋淀”,“黄鹤楼”]]   # lst2=lst1.copy() #浅拷贝,只拷贝第一层内容   #   #打印(id (lst1)) # 1199044806792   #打印(id (lst2)) # 1199044806984   #打印(lst1)   #打印(lst2)   #   # lst1 [4] .append(“葫芦娃”)   #打印(lst1)   #打印(lst2)

浅谈python的深浅拷贝以及fromkeys的用法