zoukankan      html  css  js  c++  java
  • day07

    数据类型str用法补充

    1     join()  是吧列表变成字符串

    s=["哈哈","呵呵","你谁啊"]
    a="_*_".join(s)
    print(a)
    #结果是哈哈_*_呵呵_*_你谁啊
    tu = ('你好', "你不好", "你好不好")
    s = "".join(tu)
    print(s)
    #结果是你好你不好你好不好
    s = "金毛狮王"
    s1 = "_".join(s) # 迭代把每一项进行拼接
    print(s1)
    #结果是金_毛_狮_王

    "  ".join 里面纺纱就是用啥吧列表连接成字符串

    2     split() 把字符串转换成列表

    s="hadhadhadha"
    e=s.split("d")
    print(e)
    #结果是['ha', 'ha', 'ha', 'ha']
    

    3  列表的删除问题

        列表在循环的时候如果执行了删除操作. 索引和长度会有变化. 这种删除是不安全.

              先把要删除的内容放在一个新列表中. 然后循环这个新列表. 删除老列表.

              dict在循环过程中是不允许删除的.
              把要删除的键放在列表中. 循环列表删除字典

    lst = ["倚天屠龙记", "诛仙", "看见", "追风筝的人"]
    lst.clear()
    print(lst)
    利用循环删除
    for w in range(0,len(lst)):
        lst.pop()
    print(lst)
    new_lst=[]
    for w in lst:
        new_lst.append(w)
    for e in new_lst:
        lst.remove(e)
    print(lst)
    

    追加   字典的小问题

    dic = dict.fromkeys(["jay", "jj"], ["周杰伦", "林俊杰"])
    dic["jay"].append("蔡依林")
    print(dic)  #同一个key值 后面追加v值
    dic={}
    dic.fromkeys(["葫芦娃", "蛇精"], ["冯提莫", "陈一发"])
    print(dic)   #什么都不打印
    循环删除的案例
    dic = {"韩哥":"发图不留种", "奎峰":"斗图小皇帝", "徐阳":"开车不留情"}
    lst=["奎峰"]
    for er in lst: # 循环list
        dic.pop(er)  # 删除的是dict中的元素
    print(dic)
    lst = ["发图哥", "谁困. 下午就往他那发图", "轰炸"]
    print(type(lst))  # 检查是什么类型 list
    tu1=tuple(lst)  #是吧列表转换成元祖
    print(tu1)
    print(type(tu1))    #检查是什么类型  tuple
    

     4     set集合
            无序的. 不重复的. 内容必须是可哈希的数据类型.
            本身是不可哈希

    dic = {"朱元璋":"明太祖", "朱棣":"明成祖", "朱元璋":"朱重八"}
    dic["朱元璋"]=["和尚"]
    print(dic)   #set就是存储的key, set集合不会重复, 无序
    
    set的构成
    s = {"alex", 1, True, {"你好"}}  #set是可以变的
    s = {"马虎疼", [1,4,7]} # 不合法. [] 列表是不可哈希的
    s = {"呵呵", "哈哈", "吼吼", (1, 4, 7)}
    # print(s)

          添加:add(),update(),

    lst = [1,4,7,1,4,5,6,7,8,2,1,3,9]
    s=set(lst)
    print(s)                      # 都是去重复
    s = set({})
    s.add("王祖蓝") # 添加元素
    s.add("王祖贤")
    s.add("王祖蓝")
    print(s)
    

      update(),

    s = {"李谷一", "周润发", "邓丽君", "黄家驹", "张国荣"}
    s.update("中岛美嘉") # 迭代挨个更新
    print(s)
    s.update(["中岛美雪", "很牛B"])
    print(s)     #结果是{'李谷一', '很牛B', '张国荣', '黄家驹', '中岛美雪', '周润发', '邓丽君'}

          删除:pop()

    s = {"李谷一", "周润发", "邓丽君", "黄家驹", "张国荣"}
    item = s.pop() # 随机删除
    print(item)
    s.remove("李谷一")   #删除
    print(s)
    for el in s:
        print(el)
    

      交集 并集 的问题

    s1 = {"刘能", "赵四", "皮长山"}
    s2 = {"刘科长", "冯乡长", "皮长山"}
    
    #求交集
    print(s1 & s2)
    print(s1.intersection(s2)) # 交集
    

      

    s1 = {"刘能", "赵四", "皮长山"}
    s2 = {"刘科长", "冯乡长", "皮长山"}
    
    # 并集
    print(s1 | s2)
    print(s1.union(s2)) # 并集
    # s1 = {"刘能", "赵四", "皮长山"}
    # s2 = {"刘科长", "冯乡长", "皮长山"}
    # 差集, 把自己本身中和对方不相关的内容留下
    # print(s2 - s1)
    # print(s2.difference(s1))
    

              查询:可迭代对象
      需要可哈希的时候用frozenset()   集合是不可变的  用frozenset()创建的集合是可变的

     s = frozenset({1,5,7})
    print(s)
    for el in s:
        print(el)
    dic = {s: "周杰伦"} # 验证. frozen是可哈希的. 不可变
    print(dic)
    

    .5 深浅拷贝
            拷贝是复制一份

    lst1 = ["紫衫龙王", "白眉鹰王", "青翼蝠王", "金毛狮王"]
    lst2 = lst1
    print(id(lst1))
    print(id(lst2))  # 浅拷贝是全部复制  id  地址都是一样的
    

      


            浅拷贝:  只会拷贝第一层内容. 第二层的内容不会拷贝
                1. copy() 2.[:]

     lst1 = ["紫衫龙王", "白眉鹰王", "青翼蝠王", "金毛狮王"]
    # # lst2 = lst1.copy() # 拷贝,复制, 克隆
    # lst2 = lst1[:]
    # lst1.append("杨宵")
    # print(lst1, lst2)

            深拷贝:  拷贝所有内容. 包括里层的所有内容

    # lst1 = ["杨晓", "谢逊", ["说不得","听不得","打不得","骂不得"]]
    #
    # lst2 = lst1.copy() # 拿到的是第一层的复制品
    # # print(id(lst1[2]), id(lst2[2]))
    #
    # lst1[2].append("看不得")
    # print(lst1, lst2)
    
    # 导入copy模块
    import copy
    lst1 = ["杨晓", "谢逊", ["说不得","听不得","打不得","骂不得"]]
    lst2 = copy.deepcopy(lst1) # 深度拷贝
    print(id(lst1[2]), id(lst2[2]))
    lst1[2].append("看不得")
    print(lst1, lst2)
    

      

      

      

  • 相关阅读:
    【318】C# 学习笔记
    【317】python 指定浏览器打开网页 / 文件
    【316】python.requests 读取网页信息
    【315】Windows 之间代码自动传文件
    多线程经典问题-----乘客做公交车问题解答3
    VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法
    [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,
    《Effective C++》学习笔记条款13 以对象管理资源
    抛弃编程语言的偏见——对话百度架构师
    IOS开发之UINavigationBar
  • 原文地址:https://www.cnblogs.com/daien522556/p/9152351.html
Copyright © 2011-2022 走看看