python notice4

1.基础数据类型的补充

  "-".join(list)  把列表元素用-连接成字符串,“-”可以换成任意内容

  “-”.join(str)  把字符串中的内容用-分割,“-”可以换成任意内容

2.列表和字典的删除

  对于列表不能在for循环时删除列表,因为索引会跟着改变。

  对于字典也不能在for循环时删除列表。

  要想循环删除,首先把要删除的内容记录到一个新列表中,然后再循环删除列表或字典中的内容

  eg:li = [11, 22, 33, 44]
    del_li = []
    for e in li:
      del_li.append(e)
    for e in del_li:
      li.remove(e)
    print(li)  #[],删除了列表中所有元素

3.dict.formkey()

  字典的属性,通过列表创建一个新的字典。前面列列表中的每一项都会作为key, 后⾯面列表中的内容作为value。  注:每个key对应的value都一样,即公用一个value列表;当修改其中一个key的value列表时,其他key对应的value列表都会跟着改变,因为所有的key公用同一个value列表。

  eg:dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦⽼板'}
    dic_del_list = []
    # 删除key中带有'k'的元素
    for k in dic:
      if 'k' in k:
        dic_del_list.append(k)
    for el in dic_del_list:
      del dic[el]
    print(dic)  #{"si":"金老板"},剩下key中不带“k”的键值对。

4.类型转换

  元组 => 列表   list(tuple)

  列表 => 元组   tuple(list)

  list=>str   str.join(list)

  str=>list   str.split()

  转换成False的数据:  0,'',None,[],(),{},set() ==> False

5.set集合(终点在去重,其他了解即可)

  set集合是python的一个基本数据类型,不常用。set中的元素特点:无序的、不重复的(可用来去重。)、可hash的(int,str,tuple,bool),set就是dict类型的数据,只保存key,不保存value。set用{}表示。

  0.去重

  列表去重eg:

    lst = [45, 5, "哈哈", 45, '哈哈', 50]
    lst = list(set(lst)) # 把list转换成set, 然后再转换回list
    print(lst)

  注:set集合中的元素是可hash的,但是set本身不可hash,故set是可变的,可以进行增删改查。

  令:s ={11,22,33}

  1.增

    s.add(key)

    s.update(“123”)  迭代更新 #s = {11,22,33,1,2,3}  注:int型不可以迭代更新,故加引号为str型。

    s.update([1,2,3])  #s = {11,22,33,1,2,3}

  2.删除

    s.pop()  随机删除一个key

    s.remove(key)  如果key存在会直接删除;若key不存在,会报错。

    s.clear  清空set。

  3.删除

    set中没有索引,无法定位,可以先删除,再添加。

    s.remove(key)

    s.add(key)

  4.查

    set是可迭代对象,故可以进行for循环

    for el in s :

      print(el)

  5.其他操作

    两个以上的set集合可以进行交集、并集、差集等操作。因不常用,这里不再赘述。

6.深浅拷贝

  1.list\dict\set赋值
    对于list,dict,set来说,直接赋值,其实是直接把内存地址给变量,并不是复制内容,所以对某一个进行修改时,另一个也会改变。

  eg:lst1 = ["⾦毛狮王", "紫衫龙王", "⽩眉鹰王", "⻘翼蝠王"]
    lst2 = lst1
    print(lst1)
    print(lst2)
    lst1.append("杨逍")
    print(lst1)
    print(lst2)
      结果:
        ['⾦毛狮王', '紫衫龙王', '⽩眉鹰王', '⻘翼蝠王', '杨逍']
        ['⾦毛狮王', '紫衫龙王', '⽩眉鹰王', '⻘翼蝠王', '杨逍']

  2.浅拷贝

    .copy()  只会拷贝第一层,第二层不会拷贝。

    eg:list1 = [11,22,33,aa]

      list2 = list.copy()  或者list2 =llist1[:]

     

    浅拷贝就拷贝第一层,只拷贝了list1,list1和list2的内存地址不一样。当改变list1时,list1和list2内容不一样;但当内存地址aa的内容变时,list1和list2依然一样。

  3.深拷贝

    在前面调用import copy模块

    格式:import copy

      list2 = copy.deepcopy(list1)

    深拷贝就是元素以及元素内部的元素全部拷贝了一份,相当于在内存中开辟了两个大空间,及各个子元素的小空间,不会产生修改一个另一个跟着改变的情况。

 

 

    

 

posted @ 2019-07-15 14:39  小路_fan  阅读(158)  评论(0)    收藏  举报