极简python之格式化字符串1

时启发 2024-05-17 22:06:14

上篇对切分与range函数进行了同步学习,更加入了列表推导式的新知识。过程中的一些代码纯粹为了帮助学习而生。从复杂到简单是我们的追求,但不应该是我们一味的追求。相反,适当的时候也要学会回归笨办法。比如说可以用步长表示的,用切分的形式是最好的,但如果步长表示有难度的时候,当然要寻找次好的方案。比如还是a=list(range(10,20)),求索引位置1到9(不含)中奇数位置但值不等于15的元素组成的列表。这个用切分的形式是一次性做不到的,采用列表推导式却也是个办法,见图1:

图1 用列表推导式实现稍微复杂一点的切分

现在,str字符串对象的切分参照列表的切分来学习,想必容易多了——毕竟,str也是一种序列,但与list属于可变序列不同,str是一种由unicode码位组成的不可变序列(参见官方文档:https://docs.python.org/zh-cn/3.12/library/stdtypes.html#textseq)。但两者共同的父类collections.abc.Sequence,而可变序列与不可变序列的区别主要在是否支持内置函数hash()。见图2:

图2 列表和字符串

由上图,我们可以看出,两者都是collections.abc.Sequence的子类,而可变序列(这里是列表list)不能用hash函数取哈希值,而不可变序列(这里是字符串str)可以。

如果给字符串str变量赋值,通常字符串的写法会是以单引号或双引号引起的内容(当然单引号或双引号必须在首尾成对出现)。除此之外,还有一种首尾各用三个引号的表示方式,这种方式通常用来表示跨行文本。如图3:

图3 字符串的表示

上图变量c,首先可以看到换行不用考虑转义的问题了;然后,首尾的双引号同样可以换成单引号。除了字面量这种表示法(所谓字面量,可以理解为你看到的是啥就是啥,所见即所得:D),其实还可以再字符串中夹杂变量使用,这个时候有两点需要注意:一是字符串前加f,二是字符串中夹杂的变量或表达式需要用大括号括起来。如图4:

图4 字符串夹杂变量的情形

要知道这可比d=a+','+b+',打算去' + c + '玩'的表达形式简单多了。现在回到最初的某篇文章中加法运算的实现,我们还是输入两个加数,然后打印出加法算式及结果,利用字符串夹杂变量的形式,貌似好看多了。见图5:

图5 两个数的加法

这其中{int(a)+int(b)}插入的是一个表达式,即把输入到a、b中的字符串分别转化为整数之后,再得到相加的结果,并把结果转换为字符串,替换到{int(a)+int(b)}所在的位置。这表示只要其中的表达式能自动或手动(利用特定函数)转换为字符串即可。

0 阅读:12

时启发

简介:读书笔记,编程经验,旅途见闻,人生感悟