20180710

一.知识点的补充(基础数据类型的相关知识点)

1.str 字符串   join()

例如:

  s = "可口可乐"

  s1 = s.join("非常可乐")                     #把字符串s插入到"非常可乐"中

  print(s1)                ==>非可口可乐常可口可乐可可口可乐乐可口可乐   

例如:  

  # s = "_".join("***")

  # print(s)      ==>*-*-*     join可以把列表编程字符串,把字符串变成列表  .split()

例如:

  s = "A_B_C"
    s1 = s.split("_")
    print(s1)              ==>['A','B','C']

2.列表list的删除

例如:    (要求不要使用clear全部清除,换一种写法)

  lst = ["我不是药神","西游记","西红柿首富","超时空同居"]                     

  lst1=[]

  for el in lst:                                                                                                      字典和列表 在循环的时候不能删,因为会改变索引

    lst1.append(el)     记录下来要删除的内容                                                 (要把删除的内容记录在列表中,循环列表删除原列表或字典里的数据)

  for el in lst1:        循环记录的内容

    lst.remove(el)     删除原来的内容

  print(lst)                      ==>[](全部清除)

3.fromkeys                 (不会对原来的字典产生影响,产生新的字典)

例如:

  a = dict.fromkeys("麻花藤","*")                           前面的一项都会作为key,后面一项都会作为value

  print(a)               ==>{"麻":"*","花":"*","藤":"*"}

例如: 

  dic = dict.fromkeys(["jay", "JJ"], ["周杰伦", "麻花藤"])
  print(dic)                          ==>返回给你一个新的字典
  dic.get("jay").append("胡大")
  print(dic)                          ==>{'jay':["周杰伦","麻花藤","胡大"],"jj":["周杰伦","麻花藤","胡大"]}

4.类型转换   (想转换成什么,就用什么括起来)

元组   ==>   列表                    list(tuple)

列表   ==>   元组                       tuple(list)

list  ==>  str        str.join(list)

str  ==>  list        list.split()

转换成False 的数据类型

0  ''   None    []   ()   {}     set()==>     False

二.set   集合

set集合是python的一个基本数据类型 

set中的元素是不重复的,无序的,里面的元素必须是可哈希的(int  str  bool   tuple) 

set 是dict类型的数据.只保存key   不保存value   也用{}表示

set 本身是不可哈希的   是可变的   set的主要功能是去掉重复的东西

例如:

  s = {"ABC","ABC","DEF","XYZ"}

  print(s)       ==>{"ABC","DEF","XYZ"}

⑴增

例如:

  s = {"刘嘉玲","关之琳","王祖贤"}

  s.add("郑裕玲")             ==>{'郑裕玲', '刘嘉玲', '关之琳', '王祖贤'}

  s = {"刘嘉玲","关之琳","王祖贤"}

  s.update(["郑裕玲"])     ==>{'郑裕玲', '刘嘉玲', '关之琳', '王祖贤'}

⑵删

  s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李李若彤"}

  s1 = s.pop()          ==>   打印s1出来的是随机删除的那一项

  print(s)                ==>  打印出来的是随机删除后的s

  s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李李若彤"}

  s.remove("刘嘉玲")             ==> {'关之琳', "王祖贤","张曼玉", "李李若彤"}

  s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李李若彤"}

  s.clear()            清空集合 

⑶改

  先使用remove删除,后用add  添加的方式来完成修改

⑷查询                 set是可迭代对象,可以进行for循环

  for el in s:

    print(el)

三.深浅拷贝

1.  直接赋值   两个变量指向同一个对象

例如:          (列表,进行赋值操作的时候,实际上是引用内存地址的赋值,内存中此时只有一个列表,两个变量指向一个列表)     字典也一样

  lst = ["ABC","1234","DEF","567"]

  lst1 = lst

  lst1.append("979")     对其中一个进行操作,两个都跟着改变

  print(lst1,lst)                ==>打印出来的两个列表一样,都添加了"979"

2.浅拷贝    copy   (只拷贝表面第一层的内容)

例如:

  lst1=["何炅","杜海涛","周渝民"]

  lst2 = lst1.copy

  lst2.append("李嘉诚")

  print(lst1,lst2)                          ==>lst1还是原来的内容,lst2在lst1的基础上又添加了"李嘉诚"

3.深拷贝 import copy  (deepcopy)

例如:

  import copy

  lst = ["超人","七龙珠","葫芦娃",["金城武","王力宏","ABC"]]

  lst2 = copy.deepcopy(lst)                                  #把lst1扔进去进行深度拷贝,包括内部所有内容进行拷贝

  lst[4].append("何炅")

  print(lst,lst2)                          ==>lst 里面那层列表中添加了"何炅"  ,lst2是想lst修改前的数值

#为什么要有深浅拷贝?

拷贝比创建对象的过程要快

原文地址:https://www.cnblogs.com/lhy979/p/9289454.html