python输出转义符字符_[8] Python转义字符和切片

1. 概述

今天我们要补充一下字符串和列表的相关内容。加粗体代表我们已经介绍的内容,斜体代表新增内容。计算机编程的原理简要介绍

集成开发环境PyCharm

变量名、数字、字符串、列表

句式

输入和输出

条件判断语句

循环语句

注释

函数

模块和引入

各类数据结构

2. 转义字符

何为转义字符?在我们打代码时,有些格式的字符我们并不能打出来,比如另起一行、回车键,或者是单双引号等等。我们来通过具体例子看一下为什么我们需要转义字符。

print(""Time is money." - Benjamin Franklin")

在编译器编译这行代码时,它会寻找两个引号之间的内容。我们需要它最后显示的文字是:

"Time is money."- Benjamin Franklin

很显然文本里本来就要有的引号,和表示这段文字是字符串的引号交错着排列,迷惑了编译器。那么如何告诉编译器这个引号是属于这个文本的一个字符呢?

\":表示的是双引号

\':表示的是单引号

\n:换行

\t:横向制符表,也就是tab

\\:表示的是后斜杠

具体应用看这里:

print("\"Time is money.\"- Benjamin Franklin")

print('\'Time is money.\'- Benjamin Franklin')

print("This is the first line.\nThis is another line.")

print("\tThis is after the tab.")

print("Just to print out backslash\\")

运行结果:

"Time is money." - Benjamin Franklin

'Time is money.' - Benjamin Franklin

This is the first line.

This is another line.

This is after the tab.

Just to print out backslash \

其实在Python字符串中,如果你习惯使用双引号,而双引号里不会再出现其他双引号,你可以直接使用单引号符号,没有必要打后斜杠。反之亦然,如果你习惯用单引号括起字符串,而里面没有其他单引号,可以省去后斜杠直接用双引号符号。

print("\"Time is money.\"- Benjamin Franklin")

print('"Time is money." - Benjamin Franklin')

但是我个人还是建议大家但凡碰到引号作为字符的,还是用转义字符比较安全、保险,因为如果以后碰到需要添加文本内容或者修改代码格式,事先用好转义字符会避免不必要的麻烦。

3. 切片

首先何为切片,切片这名字听着像是在切豆腐,但是其实我们已经接触过切片了,也就是字符串、列表等一串东西的截取。

code = "ABCD-1234-WXYZ-9876"

print(code[1:3]) #BC

然而我们在这里再补充一个,

var_name[from:to:step]

我们添加了一个冒号,后面加上一个数字step,表示每隔几个截取一下。这么说有点玄乎,看一下例子:

code = "Aa-Bb-Cc-Dd-Ee-Ff-Gg"

print(code[3:14:3]) #BCDE

我们从下标为3(第四个)的字符上,也就是B开始,每3个字符截取一下,一直截到第十四个字符(下标为14-1=13),也就是小写的e。输出的字符串第一个是B,接下来,我们就直接+3,截取下标为6的字符,C,再+3截取D,再+3截取E,再+3时下标已经超过e所在的位置了,所以停止。最后输出BCDE。

大家可以玩一玩,对于列表来说也是一样的,下面给大家看几个例子:

list_number = [0, 1, 2, 3, 4, 5, 6, 7]

list_even = list_number[::2]

list_odd = list_number[1::2]

print(list_even) #[0, 2, 4, 6]

print(list_odd) #[1, 3, 5, 7]

我们也说过了,如果冒号上没填数字,就是默认值,头下标没填就是从开头截取,尾下标没填就是截至最后,第三个数字(第二个冒号后的数字)空着,也就是默认间隔,为1,即在头下标到尾下标之间每个字符都要。

list_number = [0, 1, 2, 3, 4, 5, 6, 7]

#接下来三个list都长得一样

list_a = list_number[1:6]

list_b = list_number[1:6:]

list_c = list_number[1:6:1]

print(list_a, list_b, list_c)

#[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]

那么如果我们间隔是负数会是什么样呢?

list_number = [0, 1, 2, 3, 4, 5, 6, 7]

list_partial_backward = list_number[6:1:-1]

print(list_partial_backward) #[6, 5, 4, 3, 2]

我们可以看到头下标比尾下标靠后,即从下标为6的数,倒着截,间隔为1,截至下标为头下标+1的数,也就是2这里。

如果我们非要调皮,想要头下标比尾下标靠前:

list_naughty = list_number[1:6:-1]

这样截取出来的是个空列表(但不报错),我们先要从前往后截取,又要从后往前截取,指示本就不明确,结果肯定什么也没有。

当然这里的头尾下标我们都能用负数下标。

4. 列表的reverse函数

对于列表,我们有一个reverse,反转函数。顾名思义,就是把这个列表倒过来排序,切片中也有类似运用,该切片也可以应用至字符串中:

list_number = [0, 1, 2, 3, 4, 5, 6, 7]

list_backward = list_number[::-1]

print(list_backward) #[7, 6, 5, 4, 3, 2, 1, 0]

使用[::-1]就能实现把整个列表反着截取。这里头尾下标缺失,Python看到间隔是-1就默认是从最后倒着截到最前。

那么我们还提及过reverse函数,它和这个切片之间有什么区别呢?

首先,切片只是截取字符串或者列表,截取的目的是按照某个顺序(正向、反向、间隔)复制下一个片段的数据,这个片段可以是整个。既然是复制下来的,那么原本的列表或字符串就不会变。另外,改变原来列表的数据不会对切片数据产生影响(这个要到很后面才介绍,浅拷贝和深拷贝)。

但是在列表中,我们有个reverse函数,它是直接把原来的数据反了一下,具体看:

list_number = [0, 1, 2, 3, 4, 5, 6, 7]

list_number.reverse()

print(list_number) #[7, 6, 5, 4, 3, 2, 1, 0]

reverse函数的作用是把原来的列表直接反着排序,原来的列表就被硬生生改掉了。因为reverse是个内部函数,我们并不能把list_number.reverse()这一行作为一个新列表赋值给其他变量。

今天的内容就当是对前面内容的小补充,会对以后的代码有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值