今日学习

  集合

  内存相关知识

  深浅拷贝

内容回顾与补充

(1)列表:

    (a)reverse 反转     

    v1=[1,2,3111,32,13]
    print(v1)
    v1.reverse()
    print(v1)
     #输出的结果为:[13,32,3111,2,1]
    (b)sort 排序    
  1.     v1=[11,22,3111,32,13]
       v1.sort(reverse=False)# #从小到大(默认)
        print(v1) #输出结果为:[11, 13, 22, 32, 3111]
        v1.sort(reverse=True) #从大到小#
        print(v1) #输出的结果为:[3111, 32, 22, 13, 11]

(2)字典

  (a)keys/item/values/

  (b) get:与字典中通过键查询值功能类似,但当键不存在时会返回默认值None,当然默认值也可以被指定,具体示例如下:

  1. info={'k1':'v1','k2':'v2'}
    v0 = info["k1"]
    v00 =info.get("k1")
    #v1=info['k11111'] 该处会报错
    v2=info.get('k1111')
    #None就是Python中的空
    v3=info.get('k1111',666)
    print(v0)
    print(v00)
    print(v2)
    print(v3)
    # #None数据类型,改类型表示空(无任何功能,专门用于提供空值)

  (c)pop  

  1.   info={'k1':'v1','k2':'v2'}
      result=info.pop('k2') #result返回值为v2
      print(info,result) #返回结果为{"k1":"v1"} v2
      #改写发等同于del info["k2"]

   (d)update 不存在,则添加;存在则更新  

  1.   info={'k1':'v1','k2':'v2'}#不存在,则添加/存在,则更新
      info.update({'k3':'v3','k4':'v4','k2':666})
      print(info)
      #输出结果为:{'k1': 'v1', 'k2': 666, 'k3': 'v3', 'k4': 'v4'}

  (e)判断一个字符串中是否有敏感字符

  str

    v= "Python全栈21期"

    if "全栈" in v:

      print("包含敏感字符")

  list/tuple

    v=['alex','oldboy','藏老四','利奇航']
    if "利奇航" in v:
      print("包换敏感字符") 

  dict

    v={'k1':'v1','k2':'v2','k3':'v3'}
    #默认按照键判断,即:判断x是否是字典的键。
     if 'x' in v:
     pass
    #请判断:k1是否在其中
   if 'k1' in v:
       pass
  #请判断:v2是否在其中
  #方法一:循环法
    flag = "不存在"
    for i in v.values():
      if i =='v2':
        flag = "存在"
    print(flag)
  #方法二:
if 'v2' in  list(v.values()): #强制转换成列表['v1','v2','v3']
  pass  
#请判断k2:v2是否存在其中
value= v.get("k2")
if value = ="v2" :
  print("存在")
else:
  print("不存在")
练习题:
  1. #让用户输入任意字符串,然后判断此字符串是否包含指定的敏感字符。
    char_list=['利奇航','堂有光','炸展会']
    content=input('请输入内容:')#我叫利奇航/我是堂有光/我要炸展会
    success = True
    if content in char_list :
    success = False
    if success:
    print(content)
    else:
    print("含有敏感字符")

集合

  (1)集合set :特性:无序且不重复

    (2)集合的格式:v={1,2,3,4,5,6,99,100}

  1. #疑问:v={} #这是一个空字典
    """
    None
  2.  
  3. #int类型
    v1=123
    v1=int() #-->0
    print(v1)
    #bool类型:bool类型只有两个值:True/Flase
    v2 = bool() #--> 返回值为:Flase
    #str
    v3 =""
    v3 = str()#-->
    #list
    v4=[]
    v4 =list()
    #tuple
    v5 = ()
    v5 = tuple()
    #dict
    v6 ={}
    v6 = dict()
    #set
    v7 = set()
    """

  (3)集合的独有功能

    add/discard/update/intersetion(交集)/union(并集)/difference(差集)/symmetric_differdnce

  (4)公共功能

    len(长度)/for 循环

    v={1,2,'李邵奇'}
    print(len(v))
    #输出的结果为:3
    v={1,2,'李邵奇'}
    for item in v:
      print(item)
    #输出集合中的每一个元素
  (5)嵌套问题
  1. #在python中,整型,bool布尔,字符串,元组属于不可变的数据类型
    #列表,字典,集合属于可变的数据类型
    #1.列表,字典,集合-->不能放在集合中+不能作为字典的key(unhashable)
    # info={1,2,3,4,True,"国风",None,(1,2,3)}
    # info1={True,2,3,4,1,"国风",None,(1,2,3)}
    # print(info)
    # print(info1)
    #info输出的内容为:{1, 2, 3, 4, None, (1, 2, 3), '国风'}
    #info1输出的内容为:{True, 2, 3, 4, None, (1, 2, 3), '国风'}
    #注意:True 代表的是1,Flase 代表的是0,集合是去重的
    #2.hash->哈希是怎么回事?
    # #因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。
    #3.特殊情况
    # info={0,2,3,4,False,"国风",None,(1,2,3)}
    # print(info)
    #输出的结果为:{0, '国风', 2, 3, 4, None, (1, 2, 3)}
    info={1:'alex',True:'oldboy'}
    print(info)
    #输出的结果为:{1: 'oldboy'}

内存地址

    注意:两个变量应该是两个不同的内存地址,但存在一些特殊的情况。

  特殊情况:

    1.整型:-5~256  属于小数据池,公用一个内存地址
    2.字符串:"alex",'asfasdasdfasdfd_asdf'属于小数据池,公用一个内存地址,但当遇到"f_*"*3:重新开辟内存。
    注意点:是赋值,还是重新赋值,或是内部修改(例如list.append()方法就属于内部修改)

  练习题

  1. v=[1,2,3]
    values=[11,22,v]
    #练习1:
    """
    v.append(9)
    print(values)
    #[11,22,[1,2,3,9]]
    """
    #练习2:
    """
    values[2].append(999)
    print(v)
    #[1,2,3,999]
    """
    #练习3:
    """
    v=999
    print(values)
    #[11,22,[1,2,3]]
    """
    #练习4:
    """
    values[2]=666
    print(v)
    #[1,2,3]
    """
    #练习五
    # v1=[1,2]
    # v2=[2,3]
    # v3=[11,22,v1,v2,v1]

  查看内存地址

  1. # v1=[1,2,3]
    # v2=v1
    # v1.append(999)
    # print(v1,v2)
    # print(id(v1),id(v2)
    # 输出结果为:[1, 2, 3, 999] [1, 2, 3, 999]
    # 2938251599552 2938251599552
  2.  
  3. # v1=[1,2,3]
    # v2=v1
    # print(v1,v2)
    # print(id(v1),id(v2))
    # v1=999
    # print(v1,v2)
    # print(id(v1),id(v2))
    # 输出结果为:[1, 2, 3] [1, 2, 3]
    # 2278782156608 2278782156608
    # 999 [1, 2, 3]
    # 2278782223248 2278782156608

问题 :== 和 is有什么区别?

  == 用于比较值是否相等。
  is 用于比较内存地址是否相等。

总结

  列表:reverse/sort

  字典:find/pop/update

  集合:add/discard/update/intersection/union/difference/symmetric_difference

  特殊:嵌套:集合/字典中的key;空:None,空集合。。。。

  id

  type

  嵌套的应用:赋值,修改内部元素:列表/字典/集合

20200104--python学习第六天的更多相关文章

  1. python学习 第六天课后总结:

    <br class="Apple-interchange-newline"><div></div>       python学习 第六天课后总结 ...

  2. python学习第六天运算符总结大全

    python学习第六天运算符总结大全,玖乐网络(www.96net.com.cn)列出下面详细 1,算术运算符 + 加 - 减 *乘 / 除 % 求模 ** 乘方 // 取整除 - 返回商的整数部分 ...

  3. python学习第六天

    一. 模块介绍1. 模块的定义:用一堆代码实现了某个功能的代码集合     包的定义:本质就是一个目录(必须导游一个_init_.py文件),是用来从逻辑上组织模块的.2. 需要多个函数才能完成(函数 ...

  4. python学习第六天 条件判断和循环

    总归来讲,学过C语言的同学,对条件判断和循环并不陌生.这次随笔只是普及一下python的条件判断和循环对应的语法而已. 条件判断: 不多说,直接贴代码: age = 23 if age >= 6 ...

  5. python学习第六天:python基础(dict、set)

    dict dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度 创建&取值 为什么dict查找速度这么快? 因为 ...

  6. python学习第六天:python基础(条件判断、循环)

    条件判断 格式 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> ...

  7. 数据类型+内置方法 python学习第六天

    元组 用途:不可变的列表,能存多个值,但多个值只有取的需求而没有改的需求. 定义方式:在()内用逗号分隔开多个元素,可以存放任意类型的值. names=(‘alex’,’blex’,’clex’) 强 ...

  8. python学习第六天--匿名函数、过滤、映射

    匿名函数 lambda表达式 过滤器 filter(判断函数,可迭代对象) 会根据提供的函数对指定序列做过滤 映射 map(判断函数,可迭代对象) 会根据提供的函数对指定序列做映射

  9. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  10. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

随机推荐

  1. php5升php7代码修改整理

    1. 为什么升级至php7 a.安全需要 过早以至于不维护的php版本难免会有未修补的漏洞,安全性要求较高的行业是要及时升级的. b.性能提升(开启opcache hugepage) 据说性能提升一倍 ...

  2. PTA - dfs

    地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...

  3. MySql数据主从同步配置

    由于需要配置MySQL的主从同步配置,现将配置过程记录下,已被以后不时之需 MySql数据主从同步   1.1. 同步介绍 Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一 ...

  4. BFT-SMaRt:用Netty做客户端的可靠信道

    目录 一.Netty服务端的构建 1. 父类构造函数 ① 查找缓存 ② 相关日志 2. 服务端构造 ① 配置读取 ② 服务端配置 3. 服务端功能 ① 通用接口功能 ② Channel处理器 4. 节 ...

  5. BAT脚本每隔30秒创建一个512兆文件(测试磁盘监控用)

    @echo offsetlocal ENABLEDELAYEDEXPANSIONset /a ii=0 for /l %%i in (1,1,100) do (set /a ii+=1ping -n ...

  6. Docker三剑客之swarm

    简介 swarm是一种docker集群管理工具,跟三剑客前两者不同的是:compose是一种统一编排的工具,machine是一种远程控制工具,swarm则是将多个docker主机映射成一个docker ...

  7. maven项目pom.xml加载本地jar,自定义jar

    将jar放到resource目录下面: pom添加配置 <!-- 加载IK自定义 依赖--> <dependency> <groupId>com.ik.up< ...

  8. springboot-mybatis配置问题

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

  9. Java 程序是如何执行的

    Java 程序是如何执行的 了解任何一门语言的精髓都是先俯览其全貌,从宏观的视角把握全局,然后再深入每个知识点逐个击破,这样就可以深入而快速的掌握一项技能.同样学习 Java 也是如此,本节就让我们先 ...

  10. 曹工说Spring Boot源码(15)-- Spring从xml文件里到底得到了什么(context:load-time-weaver 完整解析)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...