python笔记06 数据类型

上个笔记内容补充

  1. 补充

    • 列表

      • reverse,反转。

        v1 = [1,2,3111,32,13]

        print(v1)

        v1.reverse()

        print(v1)

        v1=v1[::-1]

      • sort

        v1 = [11,22,3111,32,13]

        print(v1)

        # v1.sort(reverse=False) # 从小到大(默认)
        # v1.sort(reverse=True) # 从大到小
        # print(v1)
    • 字典
      • keys/values/items

        info = {'k1':'v1','k2':'v2'}

        for x1,x2 in info.items():

        print(x1,x2)

        for item in info.items():

        print(item)

        for k in info.values():

        print(k)

        for x in info.keys():

        print(x)

        输出:

        k1 v1

        k2 v2

        ('k1', 'v1')

        ('k2', 'v2')

        v1

        v2

        k1

        k2

      • get

        info = {'k1':'v1','k2':'v2'}

        # v1 = info['k1']#k1无值,会报错.
        # v2 = info.get('k1') # 如果k1无值,返回None给v2.
        # v3 = info.get('k1',666)#如果k1无值,返回666给v3.
        # print(v2)
        # None数据类型,改类型表示空(无任何功能,专门用于提供空值)
      • pop

        info = {'k1':'v1','k2':'v2'}

        result = info.pop('k2')

        print(info,result)

        del info['k1']

        print(info)

        输出的结果:

        {'k1': 'v1'} v2

        {}

      • update

        info = {'k1':'v1','k2':'v2'}

        # 不存在,则添加/存在,则更新

        info.update({'k3':'v3','k4':'v4','k2':666})

        print(info)

        ----------

        info = {'k1':'v1','k2':'v2'}

        info.update({'k3':666})

        print(info)

        输出的结果:

        {'k1': 'v1', 'k2': 'v2', 'k3': 666}

    • 判断一个字符串中是否有敏感字符?
      • 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 v in v.values():
        if v == '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('不存在')
      • 练习题

        # 让用户输入任意字符串,然后判断此字符串是否包含指定的敏感字符。

        char_list = ['利奇航','堂有光','炸展会']
        content = input('请输入内容:') # 我叫利奇航 / 我是堂有光 / 我要炸展会
        success = True
        for v in char_list:
        if v in content:
        success = False
        break
        if success:
        print(content)
        else:
        print('包含铭感字符') # 示例:
        # 1. 昨天课上最后一题
        # 2. 判断 ‘v2’ 是否在字典的value中 v = {'k1':'v1','k2':'v2','k3':'v3'} 【循环判断】
        # 3. 敏感字

内容详细

  1. 集合 set

集合特点:无序,无重复

v = {1,2,3,4,5,6,99,100}

# 疑问:v = {}
"""
None
int
v1 = 123
v1 = int() --> 0
bool
v2 = True/False
v2 = bool() -> False
str
v3 = ""
v3 = str()
list
v4 = []
v4 = list()
tuple
v5 = ()
v5 = tuple()
dict
v6 = {}
v6 = dict()
set
v7 = set()
"""
  1. 集合独有功能

    • add
    • discard
    • update
    • intersection
    • union
    • difference
    • symmetric_difference

      v = {1,2,3,4,5,6,99,100}

      v.clear()#表示清空

      #增加

      v.add('zhangsan')

      print(v)

      #删除

      v.discard(100)

      print(v)

      #批量增加

      v.update({101,102,105})

      print(v)

      v1=v.intersection([101,102])

      print(v1)

      #交集

      v2=v.intersection({102,103,105,106})

      print(v2)

      #并集

      v3=v.union({1000,1001,1002,1005})

      print(v3)

      #差集

      v4=v.difference({1,2,3})

      print(v4)

      #对称差集,v5属于两者并集,且不属于两者交集。

      v5=v.symmetric_difference({1,'lisi',5})

      print(v5)

      输出:

      {1, 2, 3, 4, 5, 6, 99, 100, 'zhangsan'}

      {1, 2, 3, 4, 5, 6, 99, 'zhangsan'}

      {1, 2, 3, 4, 5, 6, 99, 101, 'zhangsan', 105, 102}

      {101, 102}

      {105, 102}

      {1, 2, 3, 4, 5, 6, 99, 101, 'zhangsan', 105, 102, 1000, 1001, 1002, 1005}

      {99, 4, 101, 5, 6, 'zhangsan', 105, 102}

      {2, 3, 4, 99, 6, 101, 'zhangsan', 105, 102, 'lisi'}
  2. 公共功能

    • len

      v = {1,2,'李邵奇'}

      print(len(v))
    • for循环

      v = {1,2,'李邵奇'}

      for item in v:

      print(item)
    • 集合没有的特性:索引、步长、切片、删除、修改
  3. 嵌套问题

    # 1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable)

    集合中的元素是通过has计算,放在has表中。

    # info = {1, 2, 3, 4, True, "国风", None, (1, 2, 3)}

    # print(info),输出中没有true,true和1重合。

    # 2. hash -> 哈希是怎么回事?

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

    # 3. 特殊情况
    # info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)}
    # print(info) ,False和None重合。 # info = {
    # 1:'alex',
    # True:'oldboy'
    # }
    # print(info),
    #{1: 'oldboy'}
    #(1,和true在has计算后重合)
  4. 内存相关

  • 示例一

    v1 = [11,22,33]

    v2 = [11,22,33]

    v1 = 666
    v2 = 666 v1 = "asdf"
    v2 = "asdf" # 按理 v1 和 v2 应该是不同的内存地址。特殊:
    py缓存机制:
    py小数据值:-5-256,值重复赋值,地址相同
    字符串:常见字符串,重复赋值,地址相同
    1. 整型: -5 ~ 256
    2. 字符串:"alex",'asfasd asdf asdf d_asdf ' ----"f_*" * 3 - 重新开辟内存。
  • 示例二:

    v1 = [11,22,33,44]

    v1 = [11,22,33]

    print(v1)

    [11, 22, 33]

  • 示例三:

    v1 = [11,22,33]

    v2 = v1

    # 练习1 (内部修改)
    v1 = [11,22,33]
    v2 = v1
    v1.append(666)
    print(v2) # 含 666 # 练习2:(赋值)
    v1 = [11,22,33]
    v2 = v1
    v1 = [1,2,3,4]
    print(v2)#v1重新赋值,v2还是指向v1 = [11,22,33]。 # 练习3:(重新赋值)
    v1 = 'alex'
    v2 = v1
    v1 = 'oldboy'
    print(v2) #alex
  • 示例四

    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]

    这里v3中的v1,v2,v1表示的上面两个列表的地址。v1,v2重新复制,v3不会变化。

  • 查看内存地址

    """

    v1 = [1,2,3]

    v2 = v1

    v1.append(999)

    print(v1,v2)

    print(id(v1),id(v2))

    """

    """
    v1 = [1,2,3]
    v2 = v1
    print(id(v1),id(v2))
    v1 = 999
    print(id(v1),id(v2))
    """

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

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

python笔记06的更多相关文章

  1. Python笔记 #06# NumPy Basis & Subsetting NumPy Arrays

    原始的 Python list 虽然很好用,但是不具备能够“整体”进行数学运算的性质,并且速度也不够快(按照视频上的说法),而 Numpy.array 恰好可以弥补这些缺陷. 初步应用就是“整体数学运 ...

  2. 我的python笔记06

    面向对象学习 本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做< ...

  3. python笔记 - day5

    python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...

  4. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  5. python笔记41-虚拟环境virtualenv

    前言 如果你是一个python初学者,我是不建议你搞python虚拟环境的,我看到很多python的初学者同学,使用最新版的pycharm,新建一个工程时候默认就是venu虚拟环境. 然后在使用cmd ...

  6. Python函数06/装饰器

    Python函数06/装饰器 目录 Python函数06/装饰器 内容大纲 1.装饰器 1.1 开放封闭原则 1.2 装饰器 2.今日练习 内容大纲 1.装饰器 1.装饰器 1.1 开放封闭原则 扩展 ...

  7. Python笔记之不可不练

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

  8. boost.python笔记

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

  9. 20.Python笔记之SqlAlchemy使用

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

随机推荐

  1. WebSocket协议分析

    WebSocket协议分析 1.什么是WebSocket协议 WebScoket协议是基于TCP协议建立的全双工通信,所谓的全双工通信就是双向同时通信. 2.WebSocket协议优点 WebSock ...

  2. http各个版本(1/1.1/2)对比

    参考的文章: 从理论到实践 全面理解HTTP/2 HTTP协议以及HTTP2.0/1.1/1.0区别 综合阐述http1.0/1.1/2和https 目录: http1.1 长连接 HTTP 1.1支 ...

  3. Zookeeper分布式系统协同器概念快速学习

    原文格式可以访问:https://www.rockysky.tech 分布式系统的基本操作 主节点选举:在绝大多数分布式系统中,都需要进行主节点选举.主节点负责管理协调其它节点或者同步集群中其它节点的 ...

  4. webapi+Quartz.NET解决若干定时程序同时运行的问题

    项目现状: 有若干定时程序需要自启动运行,为了简便程序部署等问题,采取这种办法把定时程序集中管理到webapi中跟随api发布 代码架构介绍: 新建一个类库,类库引用Quartz(Quartz.2.3 ...

  5. 多线程共享变量和 AsyncLocal

    >>返回<C# 并发编程> 1. 简介 2. 异步下的共享变量 3. 解析 AsyncLocal 3.1. IAsyncLocalValueMap 的实现 3.2. 结论 1. ...

  6. CommunityServer的编译

    1. 简介 Community Server是一个免费的开源协作系统,用于管理文档.项目.客户关系和电子邮件通信,可以在私有服务器上安装和配置.它的组成分为: 1. OnlyOfficeJabber  ...

  7. 想学大学计算机课?这 37 门 CS 专业必修课,了解一下

    最近,不少高校延迟开学,大家只能宅家上网课. 有一些朋友,想趁此期间,多学点计算机的专业课,却不知从何学起. 211,985大学的计算机专业课都是经过授课教师精心安排的,从大一到大四,课程合理设置,循 ...

  8. OpenLayers 6 学习笔记2 WMS服务避坑记录

    心血来潮,花1小时安装软件写代码+复习api,顺便熟悉一波wms 再次强化认知了wms获取要素的能力没有wfs强,有待考究 原文链接(转载请声明@秋意正寒  博客园/知乎/B站/csdn/小专栏):h ...

  9. linux下(centos7)docker安装

    参考链接https://docs.docker.com/install/linux/docker-ce/centos/ 第一步,确定是centos7及以上版本 cat /etc/redhat-rele ...

  10. MySQL数据库root密码忘记丢失重置方法

    对于DBA来说,丢失超管用户root的密码是致命的, 可以通过添加--ship-grant-tables参数来跳过权限表. 1.忘记root密码,进不去数据库: 这个时候需要强制停库,先查看MySQL ...