• Python精髓之括号家族:方括号、花括号和圆括号,你真的会用吗?


    Python独一无二的特色除了缩进还有哪些特色呢?大多数的回答一定是 语法简洁、简单易学、代码高效、功能强大四项。那究竟是Python的哪些语言特性使得人们普遍认为Python具有这些特点呢?其实很大程度上,这要归功于列表(list)、字典(dict)、元组(tuple)和集合(set) 这“四大金刚”。尽管整型(int)、浮点型(float)和字符串(str)也很重要,但毫不夸张地说,列表、字典、元组和集合才代表了Python语言的核心和基础,同时也是Python的精髓所在。学会使用列表、字典、元组和集合,就意味着掌握了Python这门编程语言。

    那么由列表、字典、元组和集合“四大金刚”,而演变成的由方括号、花括号和圆括号组成的“括号族”,你知道怎么用吗?

    01 方括号

    方括号几乎是所有编程语言的第一符号。这里的第一,并不是指使用频率,而是指这个符号展现出的编程语言的内涵和创造力。事实上,就符号的使用频率而言,方括号也可能是排在首位的。

    1 创建列表

    对于初学者来说,创建列表最常用的方法就是用一对方括号。

    图片

    即便是老鸟,也会大量使用方括号创建列表,尤其是使用推导式创建列表的情况下。

    图片

    但其实方括号就像口语或俚语,太过随便。大家要习惯使用严谨的list()来创建列表。使用list()创建列表,是list类的实例化的标准方法,可以体会list类的构造函数如何适应不同类型的参数。

    在这里插入图片描述

    2 列表的索引

    方括号可以创建列表,但方括号并不等同于列表,因为方括号还用来索引。

    在这里插入图片描述

    列表的索引非常灵活,尤其是引入了负数索引,用-1表示最后一个元素或逆序,实属喜大普奔。上面的操作,属于常用索引方式,如果能读懂下面的代码,说明你已经具备了足够深的功力。

    图片

    3 列表的方法

    对于列表对象的方法如果能信手拈来,那就是Python高手了。

    图片

    02 花括号

    花括号代表字典对象,大多数初学者都这样认为。然而,这是错误的,至少是片面的。下面的代码中,a和b都是用花括号创造出来的对象,却一个是字典,一个是集合。

    图片

    原来,Python用花括号表示字典和集合两种对象:花括号内是空的,或者是键值对的,表示字典;花括号内是无重复元素的,表示集合。为了不引起误会,我习惯用dict()来生成字典,用set()来生成集合。

    图片

    编码实践中,虽然在某些情况下集合是无可替代的,但集合的使用频率是“四大金刚”中最低的,我们这里不展开讨论,只说说字典的使用技巧。

    1 判断一个键是否存在于字典中

    Py2时代,dict对象曾经有has_key()的方法,用来判断是否包含某个键。py3舍弃了这个方法,判断一个键是否存在于字典中,只能使用in这样的方法了。

    图片

    2 向字典中添加一个新键或更新键值

    很多人喜欢用对字典的一个键赋值的方法,实现向字典中添加一个新键或更新键值。

    在这里插入图片描述

    我不推荐这样的方式,使用update()才更有仪式感,还可以一次添加或修改多个键。

    图片

    3 从字典中获取一个键值

    a[‘age’]是最常用的方式,但是也还会遇到键不存在的异常。下面的方法值得推荐。

    图片

    4 获取字典的全部键、全部值、全部键值对

    dict类提供了keys()、values()和items()等三个方法分别返回字典的全部键、全部值和全部键值对。需要注意的是,返回结果并非列表,而是迭代器。如果你需要列表形式的返回结果,请使用list()转换。

    图片

    5 遍历字典

    遍历字典的时候,很多同学或写成遍历字典的keys()。其实,不需要这么麻烦,可以像下面这样直接遍历。

    图片

    03 圆括号

    圆括号代表元组对象,这么说应该没有问题吧?的确,听起来没有问题,但在元组的使用上,我相信每个初学者都会跌进同一个深坑至少一次。

    1 必入之浅坑

    元组不用于列表的最显著的特点,就是无法更新元素的值。忘记或者忽略这一点,就会入坑。

    图片

    2 必入之深坑

    我们一起来看一下下面这段代码bug在哪里:

    图片

    分明只提供了1个参数,却提示说给出了6个参数,为什么呢?

    原来,元组初始化时,如果只有单个参数,则必须在单个参数之后增加一个逗号(,),否则,初始化结果仅返回原参数。

    图片

    3 单星号解包元组

    格式化输出字符串时,下面也许是很多人的写法。

    图片

    正确固然正确,但不够精彩。满分写法应该是这样的。

    图片

    4 为什么要使用元组

    既然元组的元素不可改变,那为什么还要使用元组呢?使用列表代替元组不是更方便吗?诚然,在多数情况下,可以使用列表代替元组,但下面的例子却可以证明,列表无法代替元组。

    图片

    我们可以将元组加到集合中,但列表不行,因为列表是不可哈希(unhashable)的。理解这一点并不困难:列表元素可以被动态改变,所以没有一个固定不变的哈希值——这与集合要求的元素唯一性冲突;而元组的元素被禁止更新,其哈希值在整个生命周期都不会变化,因此可以成为集合的元素。

    所以我们可以得到一个结论,元组和列表有着完全不同的存储方式。因为不用考虑更新问题,元组的速度性能要远优于列表。优先使用元组,应该成为Python程序员遵循的一条基本原则。


    资源分享

    下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    点名(缺失的数字),剑指offer,力扣
    数学建模 | 灰色预测原理及python实现
    网络编程day02
    Python 添加记录到有自增长ID的表,如何获取新产生的ID
    50、OAK的VideoEncoder节点编码h265和使用ffmpeg进行解码播放
    安科瑞为工业能效行动计划提供EMS解决方案-Susie 周
    来围观|大佬们都是如何处理风控特征变量池的
    状压dp。
    centos(7.9) minikube(v1.28.0) kaniko 构建镜像
    RocketMQ
  • 原文地址:https://blog.csdn.net/m0_67695717/article/details/127971176