zoukankan      html  css  js  c++  java
  • set集合,深浅拷⻉以及部分知识点补充

    一丶对之前的知识点进行补充

    1.str中的join方法,把列表转换成字符串

    s = "**".join(["高华新", "刘清扬", "崔园樟"])
    print(s)
    1 ss = "高华新**刘清扬**崔园樟"
    2 set = ss.split("**")
    3 print(ss)
    4 print(set)
    View Code

    2.列表和字典在循环的时候不能直接删除

    (需要把要把删除的内容记录在新列表中,然后循环新列表,删除字典或者列表)

     1 lst = ["紫云", "大云", "玉溪", "紫钻","a","b"]
     2 # lst.clear()
     3 new_lst = [] # 准备要删除的信息
     4 for el in lst: # 有一个变量来记录当前循环的位置
     5     new_lst.append(el)
     6 
     7 # # 循环新列表, 删除老列表
     8 for el in new_lst:
     9     lst.remove(el)
    10 #
    11 # # 删除的时候, 发现. 剩余了一下内容. 原因是内部的索引在改变.
    12 # # 需要把要删除的内容记录下来. 然后循环这个记录. 删除原来的列表
    13 #
    14 print(lst)
    15 print(new_lst)
    View Code
     1 lst = ["张国荣", '张铁林', '张国立', "张曼玉", "汪峰"]
     2 # 删掉姓张的
     3 # 记录姓张的.
     4 zhangs = []
     5 for el in lst:
     6     if el.startswith(""):
     7         zhangs.append(el)
     8 for el in zhangs:
     9     lst.remove(el)
    10 print(lst)
    11 print(zhangs)
    View Code

    3.fromkeys()

    1.返回新字典,对原字典没有影响

    2.后面的value.是多个key共享一个value

    1 dic = {"apple":"苹果", "banana":"香蕉"}
    2 # 返回新字典. 和原来的没关系
    3 ret = dic.fromkeys("orange", "橘子") # 直接用字典去访问fromkeys不会对字典产生影响
    4 ret = dict.fromkeys("abc",["哈哈","呵呵", "吼吼"]) # fromkeys直接使用类名进行访问
    5 print(ret)
    6 a = ["哈哈","呵呵", "吼吼"]
    7 ret = dict.fromkeys("abc", a) # fromkeys直接使用类名进行访问
    8 a.append("嘻嘻")
    9 print(ret)
    View Code

     二丶set集合

    set集合是python的一个基本数据类型,一般不是很常用,set元素是不可重复的,无须的,里面的元素必须是可hash的(int set tuple bool) 我们可以这样来记,set就是dict类型的数据,但是不保存value,只保存key set 也可以用{}来表示

    注意:set集合中的元素必须是课hash的,但是本身是不可hash得,set是可变的,不重复的可以用来去重复.

    1 s = {"周杰伦", "的老婆","叫昆凌", (1,2,3), "周杰伦"}
    2 lst = [11,5,4,1,2,5,4,1,25,2,1,4,5,5]
    3 s = set(lst)    # 把列表转换成集合. 进行去重复
    4 lst = list(s)   # 把集合转换回列表.
    5 print(lst)
    去重复
    1 s = {"刘嘉玲", '关之琳', "王祖贤"}
    2 s.update("麻花藤")    # 迭代更新
    3 print(s)
    迭代更新

    set集合的增删改查:

    1.增加

    2.删除

    3.修改

     

    4.查询

    5.常用操作

     

    set集合本⾝是可以发⽣改变的. 是不可hash的. 我们可以使⽤frozenset来保存数据.
    frozenset是不可变的. 也就是⼀个可哈希的数据类型

    ps  这个不是很常用,了解一下

     三丶深浅拷贝(重点)

    1. 赋值. 没有创建新对象. 公用同一个对象
    2. 浅拷贝. 拷贝第一层内容. [:]或copy()
    3. 深拷贝. 拷贝所有内容. 包括内部的所有
     1 # 引入copy模块
     2 import copy
     3 
     4 lst1 = ["金毛狮王", "紫衫龙王", "青翼蝠王", "白眉鹰王",["张无忌","赵敏","周芷若"]]
     5 # lst2 = lst1[:] # 浅拷贝
     6 # lst2 = lst1.copy() # 浅拷贝
     7 lst2 = copy.deepcopy(lst1)
     8 
     9 # lst1[4].append("小昭")
    10 
    11 print(lst1)
    12 print(lst2)
    13 
    14 print(id(lst1[4]))
    15 print(id(lst2[4]))
    16 
    17 # 1. 赋值操作. 没有创建新对象
    18 # 2. 浅拷贝. 只拷贝第一层内容. [:]   copy()
    19 # 3. 深拷贝. 把这个对象内部的内容全部拷贝一份. 引入copy模块. deepcopy()

     浅拷贝,只会拷贝第一层,第二层的内容不会拷贝,所以被称为浅拷贝

     深度拷贝,把元素内部进行拷贝,复制,不会产生一个改变另一个跟着改变的问题

  • 相关阅读:
    html标题-段落-字符实体-换行
    html概述和html基本结构:
    可以在一个.java文件中写两个类吗?
    栈内存和堆内存的区别
    Java的访问权限
    (转)第三方支付的盈利模式
    (转)第三方支付参与者
    直联和间联的区别——直连和间连的区别
    HashSet和LinkedHashSet特点.
    Map和TreeMap的特点
  • 原文地址:https://www.cnblogs.com/xintiao-/p/9414519.html
Copyright © 2011-2022 走看看