zoukankan      html  css  js  c++  java
  • 万恶之源---知识点补充+set集+深浅拷贝

    一. 对之前的知识点进行补充.
    1. str中的join方法. 把列表转换成字符串

    1 join将列表转换成字符串. 每个元素之间用_拼接
    2 s= "_".join(["马玉","王重阳","周伯通"])
    3 print(s)
    4 
    5 切割split
    6 
    7 ss= "马玉_王重阳_周伯通"
    8 ss=ss.split("_")
    9 print(ss)

    2. 列表和字典在循环的时候不能直接删除.
    需要把要删除的内容记录在新列表中.
    然后循环新列表.删除字典或列表

    1 1 lst=["老子","儿子","孙子","嫂子"]
    2 2 lst.clear()清除
    3 3 print(lst )
    4 4 new_lst=[]#创建一个新的列表
    5 5 for el in lst:#循环lst这列表 每次的元素(el)
    6 6     new_lst.append(el)#把lst 循环的元素(el)添加到 新的列表中 可以 print(new_lst)
    7 7 for el in new_lst:#循环new_lst 的列表的元素
    8 8     lst.remove(el) #删除旧的列表元素
    9 9 print(lst)       # 打印旧的列表
     1 删除姓周的
     2 lst1=[]
     3 lst = ["周永康","周杰伦","这周","王重阳","啦啦啦"]
     4 for i in lst:
     5     if i.startswith(""): 开始其实 startswith
     6         lst1.append(i)
     7 for i in lst1:
     8     lst.remove(i)
     9 print(lst)
    10 print(lst1)
     1 字典
     2 dic = {"提莫":"冯提莫", "发姐":"陈一发儿", "55开":"卢本伟"}
     3 # dic.clear()
     4 lst = []
     5 for k in dic:
     6     lst.append(k)
     7 
     8 for el in lst:
     9     dic.pop(el)
    10 print(dic)
    综上. 列表和字典都不能再循环的时候进行删除. 字典再循环的时候不允许改变大小

    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)

    二. set集合
    特点:
    无序, 不重复, 元素必须可哈希(不可变)
    作用:
    去重复
    本身是可变的数据类型. 有增删改查操作.
    frozenset()冻结的集合. 不可变的. 可哈希的

    1 集合去重复:
    lst = [45, 5, "哈哈", 45, '哈哈', 50] lst = list(set(lst))    # 把list转换成set, 然后再转换回list print(lst)
    2. 增加
    s = {"刘嘉玲", '关之琳', "王祖贤"} s.add("郑裕玲")
    print(s) s.add("郑裕玲")   
    # 重复的内容不不会被添加到set集合中
    print(s) s = {"刘嘉玲", '关之琳', "王祖贤"} s.update("麻花藤")    # 迭代更更新
    print(s) s.update(["张曼⽟玉", "李李若彤","李李若彤"])
    print(s)
    3.删除
    s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"} item = s.pop() #随机删除
    print(s)
    print(item)
    s.remove("关之琳") # 直接删除元素
    # s.remove("⻢马⻁虎疼") # 不不存在这个元素. 删除会报错 print(s)
    s.clear()    # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和 dict区分的.
    print(s)    # set()
    修改:
    # set集合中的数据没有索引. 也没有办法去定位⼀一个元素. 所以没有办法进⾏行行直接修改.
    # 我们可以采⽤用先删除后添加的⽅方式来完成修改操作
    s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"}
    # 把刘嘉玲改成赵本⼭山
    s.remove("刘嘉玲")
    s.add("赵本⼭山") print(s
    查询:
    for循环
    常用操作:
    & 并集
    | 并集
    - 差集
    ^ 反交集
    < 子集
    > 超集


    三. 深浅拷贝(难点)
    1. 赋值. 没有创建新对象. 公用同一个对象
    2. 浅拷贝. 拷贝第一层内容. [:]或copy()
    3. 深拷贝. 拷贝所有内容. 包括内部的所有.copy.deepcopy

  • 相关阅读:
    上下伸展的JS菜单
    [ZZ]Debug VBScript with Visual Studio
    面试总结之杂题
    [ZZ]9 Confusing Naming Conventions for Beginners
    Robocopy
    [ZZ]什么是Alpha,Beta,RC,RTM,CTP版
    使用位运算交换两个值,不用临时变量
    学习笔记之编程之美微软技术面试心得(一)
    C#中如何获取系统环境变量
    学习笔记之SQL教程 from W3School
  • 原文地址:https://www.cnblogs.com/LW-LW-LW/p/9415915.html
Copyright © 2011-2022 走看看