Barranzi

个人Blog

新时代的铁饭碗:一辈子不管走到哪里都有饭吃(还能吃上热乎的)。


Python基础语法之——元组、字典

目录

Python基础语法之——元组、字典

作者:Barranzi_

个人github主页:[github](https://github.com/La0bALanG)

个人邮箱:awc19930818@outlook.com

新时代的铁饭碗:一辈子不管走到哪里都有饭吃(还能吃上热乎的)。——佚名

免责声明:

本系列笔记撰写初衷就是为了分享个人知识以及个人学习历程中的感悟及思考,所涉及到的内容`仅供学习与交流`,请勿用作`非法或商业用途`!由此引发的任何法律纠纷`后果自负`,与作者本人无关!

版权声明:

未经作者本人授权,禁止转载!请尊重原创!

注:本文所有代码、案例测试环境:1.Linux -- 系统版本:Ubuntu20.04 LTS 2.windows -- 系统版本:WIN10 64位家庭版


元组

定义

  • 由一系列数据对象构成的不可变序列

  • 注意:

    • 元组为不可变对象,所以一旦元组对象创建是无法对其对象本身进行修改的

    • 对元组对象的修改操作包括添加元素,删除元素,修改其中某个元素。

创建元组对象

  • 创建空元组
    • 语法1:变量名 = ()
    • 语法2:变量名 = tuple()
  • 创建非空元组

    • 语法1:变量名 = (数据对象1,数据对象2,…)

    • 语法2:变量名 = tuple(可迭代对象)

      • 注意:如果创建的非空元组只有一个元素,则需要在元素后带上’,’号,标识当前元组只有一个元素

        举个例子:t = (‘张三’,)

基础操作

  • 元组的索引与切片

    • 索引取值

      语法:元组对象[下标值]

      注意:因为元组为不可变序列对象,所以其只具备索引取值,不能索引赋值

    • 元组的切片

      语法:元组对象[起始位置:结束位置:步长]

  • 元组的相关运算操作

    Python 表达式 结果 描述
    len((1, 2, 3)) 3 计算元素个数
    (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
    (‘Hi!’,) * 4 (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) 复制
    3 in (1, 2, 3) True 元素是否存在
    for x in (1, 2, 3): print (x,) 1 2 3 迭代
  • 元组的遍历

    语法:

    • for 循环变量 in 元组对象:直接遍历元组中的数据对象,循环变量拿到的是每一个元组中的数据
    • for 循环变量 in range(len(元组对象)):遍历元组的索引,循环变量拿到的是元组中每一个元素的下标

元组内置函数

序号 方法及描述 实例
1 len(tuple) 计算元组元素个数。 >>> tuple1 = ('Google', 'Runoob', 'Taobao') >>> len(tuple1) 3 >>>
2 max(tuple) 返回元组中元素最大值。 >>> tuple2 = ('5', '4', '8') >>> max(tuple2) '8' >>>
3 min(tuple) 返回元组中元素最小值。 >>> tuple2 = ('5', '4', '8') >>> min(tuple2) '4' >>>
4 tuple(iterable) 将可迭代系列转换为元组。 >>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Runoob', 'Baidu')

元组实际应用中的意义

  • 元组与列表都可以存储一系列变量,由于列表会预留内存空间,所以可以增加元素。

  • 元组会按需分配内存,所以如果变量数量固定,建议使用元组,因为占用空间更小。

  • 应用:

    • 变量交换的本质就是创建元组:x, y = (y, x )
    • 格式化字符串的本质就是创建元祖:”姓名:%s, 年龄:%d” % (“tarena”, 15)

字典

定义

  • 由一系列键值对组成的可变散列容器
  • 散列:对键进行哈希运算,确定在内存中的存储位置,每条记录(存储数据)无先后顺序
  • 键必须唯一且不可变(即键只能为字符串/数字/元组),值并无任何限制

创建字典对象

  • 创建空字典对象

    • 语法1:变量名 = {}

    • 语法2:变量名 = dict()

      注意:通过变量名 = {}创建对象的方式与集合中创建集合对象的方式高度相似,但需要注意区分。

  • 创建非空字典对象

    • 语法1:变量名 = {‘键’:值,…}
    • 语法2:变量名 = dict(可迭代对象)

基础操作

  • 字典的取值与赋值

    • 取值:字典对象[键]

    • 赋值:字典对象[键] = 值

      注意:

      • 因为字典为散列容器,其内部数据之间无直接关系,所以字典不存在索引的概念
      • 字典为可变容器,所以其具备赋值操作,但字典的取值与赋值与索引的概念毫无关系
      • 赋值时,如果键不存在,则创建记录;如果键存在,则修改值
  • 字典的遍历

    虽然字典为容器对象,但其本质仍为可迭代对象,所以字典同样具备遍历操作。语法:

    for 循环变量 in 字典对象:

    注意:

    • 遍历字典时,大部分情况下使用key标识循环变量
    • 循环变量拿到的为字典中每一个键值对的键,循环内即可通过拿到的键取其对应的值

字典内置函数&方法

  • 内置函数

    序号 函数及描述 实例
    1 len(dict) 计算字典元素个数,即键的总数。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3
    2 str(dict) 输出字典,以可打印的字符串表示。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
    3 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(dict) <class 'dict'>
  • 内置方法

    序号 函数及描述
    1 radiansdict.clear() 删除字典内所有元素
    2 radiansdict.copy() 返回一个字典的浅复制
    3 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    4 radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
    5 key in dict 如果键在字典dict里返回true,否则返回false
    6 radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
    7 radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
    8 radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    9 radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
    10 radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
    11 [pop(key,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
    12 popitem() 随机返回并删除字典中的最后一对键和值。

字典推导式

  • 语法

    {键:值 for 变量 in 可迭代对象}

    {键:值 for 变量 in 可迭代对象 if 条件}

集合与固定集合

参见笔记:2020-10-27-Python基础语法之——集合(set)与固定集合(frozenset)

阶段性总结

  • Python基本数据类型划分

    • 按照是否为数字类型
      • 数字类型:整型,浮点型,复数类型,布尔类型
      • 其他类型:字符串,列表,元组,字典,集合,固定集合,字节串
    • 按照是否为序列和容器
      • 序列:字符串,列表,元组,字节串
      • 容器:字典,集合,固定集合
    • 按照是否为可变类型
      • 可变类型:列表,字典,集合
      • 不可变类型:数字类型,字符串,元组,固定集合,字节串
  • Python各个基本类型对比

    • 字符串与列表
      • 字符串不可变,列表可变
      • 字符串只能存储字符,列表可存储一切类型对象
      • 都具备索引取值操作,字符串不能索引赋值,列表可以索引赋值
      • 均可由for循环遍历
    • 列表与字典
      • 都能实现取值赋值操作,但其原理不同
      • 均为可变对象
      • 均可实现for循环遍历
      • 字典的插入,删除,修改的速度快于列表。
      • 列表的存储是有序的,字典的存储是无序的。
    • 字典与集合
      • 均为容器对象,存储均无序
      • 集合本质上就是没有值的键
      • 集合内部元素不能重复,字典的键不能重复,但值可以重复
  • Python各个基本数据类型的适用场景

    • 元组
      • 字符串格式化占位符传值:本质上传入的是元组对象
      • 类的继承关系:当实现多继承时,本质上所有的继承父类被存储在元组对象中
      • 函数返回多个值:大部分情况采用元组返回多个值
    • 字典
      • 字符串格式化方法:本质上通过format方法向字典中传入对象
      • 当描述一个对象需要通过两个甚至多个维度时,最好使用字典
      • 当描述多个不存在顺序关系的对象时,建议使用字典
    • 集合
      • 大部分情况下,通常利用集合元素的不重复性实现基本的去重逻辑
  • del函数

    • 定义:删除数据对象
    • 本质:清除对象的某一条引用计数——删除变量
    • Python中一切基本数据类型所创建的对象皆可通过del()函数删除

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦