s21day06 python笔记

一、昨日内容回顾及补充

  1. 回顾

  2. 补充

    • 列表独有功能

      • reverse:反转

        v = [1,2,3,4,5]
        v.reverse()      #[5,4,3,2,1]
      • sort:排序

        • .sort():默认(从小到大)排序
        • .sort(reverse = False):从小到大排序(相当于默认)
        • .sort(reverse = True):从大到小排序
        v = [1,3,5,2,4]
        v.sort(reverse = False)     #[1,2,3,4,5]
        v.sort(reverse = True)     #[5,4,3,2,1]
    • 字典独有功能

      • get:相当于索引取值

        info = {'k1':'v1','k2':'v2'}
        v1 = info.get('k1')     #相当于v1 = info['k1']
        v2 = info.get('k11')      #None
        v3 = info.get('k11',666)    #666
      • pop:删除

        info = {'k1':'v1','k2':'v2'}
        result = info.pop('k2')
        #删除'k2':'v2',并将'k2'对应的值'v2'赋值给result
        #del info['k2']
      • update:批量添加(修改)

        • 不存在则增加,存在则修改
        info = {'k1':'v1','k2':'v2'}
        info.update({'k3':'v3','k4':'v4','k2':666})
        #添加'k3':'v3','k4':'v4',修改'k2'的值为666
    • 判断是否有敏感字符

      • 字符串(str)

        v = 'python全栈21期'
        if '全栈' in v:
            print('包含敏感字符')
      • 列表(list)/元组(tuple)

        v = ['alex','oldboy','张三','李四']
        if '李四' in v:
            print('包含敏感字符')
        #元组(tuple)同理
      • 字典(dict)

        v = {'k1':'v1','k2':'v2','k3':'v3'}
        #默认按照键判断,即判断x是否是字典中的键
        if 'x' in v:
            pass
        
        #问题1:判断k1是否在v中?
        v = {'k1':'v1','k2':'v2','k3':'v3'}
        if 'k1' in v:
            pass
        
        #问题2:判断v2是否在v中?
        #方法1:循环判断
        v = {'k1':'v1','k2':'v2','k3':'v3'}
        flag = '不存在'
        for v in v.values():
            if v == 'v2':
                flag = '存在'
        print(flag)
        #方法2:
        #强制转换成列表[v1,v2,v3]
        if 'v2' in list(v.values()):
            print('存在')
        
        #问题3:判断k2:v2是否在v中?
        value = v.get('k2')
        if value == 'v2':
            print('存在')
        else:
            print('不存在')
        
        示例:判断用户输入内容是否有敏感字符
        char_list = ['张三','李四','王五']     #敏感字符
        content = input('请输入内容:')
        flag = True
        for i in char_list:
            if i in content:
                flag = False
                break
        if flag:
            print(content)
        else:
            print('包含敏感字符')

二、集合(set)

  1. 特性:无序性,可变性,互异性

  2. 书写格式:v = {1,2,3,4,5,6,7}

  3. 空集合表示方式:v = set()

  4. 集合独有功能(v = {1,2,3})

    • add:添加

      • 使用格式:v.add(4) #v = {1,2,3,4}
      • 注:添加集合中已有的元素,集合不再重复添加
    • discard:删除
      • 使用格式:v.discard(2) #v = {1,3}
    • update:批量添加
      • 使用格式:v.update({4,5,6}) #v = {1,2,3,4,5,6}
    • intersection:交集
      • 使用格式:result = v.intersection({1,3,4}) #{1,3}
    • union:并集
      • 使用格式:result = v.union({1,3,4}) #{1,2,3,4}
    • difference:差集
      • 使用格式:result = v.difference({1,3,4}) #{2}
    • symmetric_difference:对称差集
      • 使用格式:result = v.symmetric_difference({1,3,4}) #{2,4}
  5. 公共功能(v = {1,2,3})

    • 长度:len

      • 使用格式:len(v) #3
    • for循环

      • 使用格式:

        for i in v:
            print(i)     #1,2,3
  6. 总结

    • 列表(list)/字典(dict)/集合(set)

      • 不能放在集合中
      • 不能作为字典的键(key)
    • hash(哈希)是怎么回事?

      • 因为在内部会将值进行哈希算法,并得到一个数值(对应内存地址),以后用于快速查找
    • 注意:

      #第1点:
      info = {0,1,2,False,'你好',None,(1,2,3)}
      print(info)      #{0,1,2,'你好',None,(1,2,3)}
      #因为False相当于0,所以False不输出
      
      #第2点:
      info = {
          1:'alex',           #因为True相当于1,所以把1对应的值修改了
          True:'oldboy'
      }
      print(info)     #{1:'oldboy'}

三、数据类型表示空

  1. 补充数据类型:None

    • None就是python中的空
    • None转化为布尔为False
    • None无任何功能,专门用于提供空值
  2. 数据类型表示空
    • None
    • int:v1 = int() #0
    • bool:v2 = bool() #False
    • str:v3 = "" 或 v3 = str()
    • list:v4 = [] 或 v4 = list()
    • tuple:v5 = () 或 v5 = tuple()
    • dict:v6 = {} 或 v6 = dict()
    • set:v7 = set()

三、内存相关

  1. 列表(list)/字典(dict)/集合(set)

    • 情况一:

      v1 = [1,2,3]
      v2 = v1
      v1.append(4)      #增加
      print(v2)      #[1,2,3,4]
      #在v1里面修改(增加/删除),v2也跟着改变
      • 修改内存中的元素,所有指向那个内存的值都会改变
    • 情况二:

      v1 = [1,2,3]
      v2 = v1
      v1 = [3,4,5]      #重新赋值
      print(v2)     #[1,2,3]
      #重新赋值v1,v2不改变
      • 重新赋值不修改内存中的元素,只改变值的指向
  2. 字符串(str)/元组(tuple)

    • 只有情况二,只能重新赋值,不能修改
  3. 总结

    • 在python中,为了提高性能,值若是以下情况(python小数据池),就不重新开辟内存

      • 常用数字:-5~256
      • 简单字符串:如'alex',除去 'alex' * 3(数字大于1) 这种情况
    • == 比较的是值是否相等,is 比较的是内存地址是否相等

      #例1:
      v1 = [1,2]
      v2 = [1,2]
      v1 == v2      #True
      v1 is v2      #False
      
      #例2:
      v1 = [1,2]
      v2 = v1
      v1 == v2      #True
      v1 is v2      #True
      • 注:python小数据池除外

s21day06 python笔记的更多相关文章

  1. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  2. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  3. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  5. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  6. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. python笔记 - day8

    python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...

  8. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  9. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

随机推荐

  1. shell实现自动部署两台tomcat项目Ⅱ

    本次分为3个脚本, scp.sh放进第一台机器(负责传输文件), schenglee.sh放进第一台机器(自动部署), schenglee2.sh放进第二台机器(自动部署) 环境 tomcat1: 1 ...

  2. HTML5的自定义属性的使用总结

    https://blog.csdn.net/qq_31851435/article/details/53100691 <div id="myDiv" data-attribu ...

  3. 剑指offer(28)数组中出现次数超过一半的数

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  4. 单元测试系列之三:JUnit单元测试规范

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...

  5. Win32汇编学习(6):键盘输入消息

    这次,我们将要学习WINDOWS程序是如何处理键盘消息的. 理论: 因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它.WINDOWS 将负责把击键消息送到具有输入焦点的那个应 ...

  6. win7 64位下redis的安装

    1.下载Redis安装包. 下载地址 https://github.com/MSOpenTech/redis,找到Release,点击前往下载页面,点击Redis-x64-3.2.100.msi下载. ...

  7. Google advertiser api开发概述——入门指南

    使用入门 AdWords API 可让应用直接与 AdWords 平台互动,大幅提高管理大型或复杂 AdWords 帐号和广告系列的效率.一些典型的用例包括: 自动帐号管理 自定义报告 基于产品目录的 ...

  8. vue进行文件下载

    本文为博主原创,未经允许不得转载: 总结一下,最近在vue中实现一个文件下载的功能,用了vue中ajax的方式请求下载接口, 但是返回报错,在网上查询之后,找到用ajax请求下载文件报错的原因:aja ...

  9. jsp/servlet学习二之servlet详解

    Servlet API概览 Servlet API有一下四个java包: 1,javax.servlet,其中包含定义servlet和servlet容器之间契约的类和接口. 2,javax.servl ...

  10. loadrunner中web_reg_save_param和web_reg_save_param_ex的区别

    在使用Loadrunner进行性能测试,编写接口请求脚本时,通过会用到关联函数,而web_reg_save_param和web_reg_save_param_ex的函数有什么区别呢?以下为总结的两点, ...