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%免费】
Python精髓之括号家族:方括号、花括号和圆括号,你真的会用吗?相关推荐
- python中花括号_震惊Python的精髓居然是方括号花括号和圆括号
https://m.toutiaocdn.com/i6862197987209118219/?app=news_article×tamp=1597845881&use_new ...
- shell中的括号(小括号,大括号/花括号)
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+str ...
- shell中的括号(小括号,大括号/花括号)的使用方法
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+str ...
- 【office】Visio 2016 画大括号(花括号) + 调整花括号尖角居中
- python大括号_我不能在Python中使用花括号吗?
我读到Python通过缩进而不是花括号来完成它所有的"代码块". 那正确吗? 所以函数,如果这样的东西都没有用花括号包围它们的块? stackoverflow.com/questi ...
- python花括号怎么取_Python如何正则提取第三层花括号()里的内容?
举例:我想把如下字符串中第三层花括号的内容提取出来{supportedBandCombination-r10{{{bandEUTRA-r103,bandParametersUL-r10{{ca-Ban ...
- python str format 输出花括号本身
两个左花括号输出左花括号本身,两个右花括号输出右花括号本身. >>> print("{{{0}".format(0)) {0 >>> print ...
- 1087 花括号展开
题目描述: 我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念: 单词中的每个字母可能只有一个选项或存在多个备选项.如果只有一 ...
- Linux中反引号(` `)、单引号(‘ ‘)、双引号(“ “)、花括号({ })的解释
反引号(` `) 反引号里面的内容必须要是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当作命令执行后,再交给调用反向单引号命令继续. 一个命令cmd1想调用另一个命令cmd2 ...
- Scala之小括号和花括号(Parentheses Crurly Braces)
文章目录 在调用函数时 如果你要调用的函数有两个或两个以上的参数,那么你只能使用"小括号" 如果你要调用的函数只有单一参数,那么"通常"情况下小括号和花括号是可 ...
最新文章
- EventBus-再也不用什么Handler了
- nslang oracle_解决ojdbc14连接oracle报“java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch”异常问题...
- 6 道 BATJ 必考的 Java 面试题
- Android模拟器genymotion的安装和使用
- Caffe编写Python layer
- 微信网页授权 获取 unionId
- svm手写数字识别python_SVM之Mnist手写数字识别
- 苹果6访问限制密码4位_1Password for Mac(专业密码管理工具)
- 种草营销这样干 小红书KOC素人和KOL达人组合种草推广
- 360云盘怎么用连接服务器异常,360云盘突然登录不上去了怎么回事 网络没问题但是360云盘登不上去怎么办...
- 交互设计和UI设计有区别吗 UI学习路线是什么
- i3处理器_千元英特尔10代I3处理器套装跑分72万?微星差异化赢得市场
- LeetCode 544. 输出比赛匹配对(NBA季后赛对阵图)
- Java基础学习九 多线程
- Angular2+ 双向数据绑定
- 华硕天选4和联想拯救者r9000p选哪个好
- MySQL报错1677
- 新媒体时代下如何践行网络口碑营销?
- img标签无图片或者图片url错误时显示默认图片
- 团队管理之—— 技术债务:如何带领团队从困境中突围而出?
热门文章
- 古典发烧音乐唱片品牌介绍
- λ动力学可自动、准确和扩展的计算蛋白与配体的相对结合自由能
- 美国西北大学计算机研究生录取,2021美国西北大学计算机工程录取案例
- 自我方向和计算机考证
- OpenWrt之GPIO操作
- ESP32 GPIO
- 单方面论述题-区间贪心快递柜详解+代码——zzx的博客
- 石头扫地机器人离线了怎么办_石头扫地机离线怎么设_石头扫地机客服_石头扫地机官网...
- 在视频会议或者在线课程中如何消除由于音箱输出的声音传递到麦克风而产生的回音,以降低听声辩音的压力,从而提高听课或者开会的专注度。
- 微信小程序按钮失效的几大原因