[Python学习日记] 字符串与序列

[Python学习日记] 字符串与序列

目录

第五天Python学习日记,学习字符串与序列。

字符串

字符串有多种形式,可以使用单引号(’……’),双引号("……")都可以获得同样的结果 。反斜杠 \ 可以用来转义
实例

>>> 'spam eggs'  # single quotes
'spam eggs'
>>> 'doesn\'t'  # use \' to escape the single quote...
"doesn't"
>>> "doesn't"  # ...or use double quotes instead
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>> "\"Yes,\" they said."
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'

在交互式解释器中,输出的字符串外面会加上引号,特殊字符会使用反斜杠来转义。 虽然有时这看起来会与输入不一样,但两个字符串是相同的。 如果字符串中有单引号而没有双引号,该字符串外将加双引号来表示,否则就加单引号。
print() 函数会生成可读性更强的输出,即略去两边的引号,并且打印出经过转义的特殊字符。
实例

>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
>>> print('"Isn\'t," they said.')
"Isn't," they said.
>>> s = 'First line.\nSecond line.'  # \n means newline
>>> s  # without print(), \n is included in the output
'First line.\nSecond line.'
>>> print(s)  # with print(), \n produces a new line
First line.
Second line.

字符串字面值可以跨行连续输入。一种方式是用三重引号:"""…""" 或 ‘’’…’’’。字符串中的回车换行会自动包含到字符串中,如果不想包含,在行尾添加一个 \ 即可。如下例

print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")

结果为
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to

字符串可以用 + 进行连接(粘到一起),也可以用 * 进行重复

>>> 3 * 'un' + 'ium'
'unununium'

把很长的字符串拆开分别输入的时候尤其有用

>>> text = ('Put several strings within parentheses '
...         'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

字符串是可以被 索引 (下标访问)的,第一个字符索引是 0。单个字符并没有特殊的类型,只是一个长度为一的字符串。索引也可以用负数,这种会从右边开始数。

>>> word = 'Python'
>>> word[0]  # character in position 0
'P'
>>> word[5]  # character in position 5
'n'
>>> word[-1]  # last character
'n'
>>> word[-2]  # second-last character
'o'
>>> word[-6]
'P'

序列

序列类型

有三种基本序列类型:list, tuple 和 range 对象。

通用序列操作

在表格中,s 和 t 是具有相同类型的序列,n, i, j 和 k 是整数而 x 是任何满足 s 所规定的类型和值限制的任意对象。
in 和 not in 操作具有与比较操作相同的优先级。 + (拼接) 和 * (重复) 操作具有与对应数值运算相同的优先级。

运算结果
x in s如果 s 中的某项等于 x 则结果为 True,否则为 False
x not in s如果 s 中的某项等于 x 则结果为 False,否则为 True
s + ts 与 t 相拼接
s * n 或 n * s相当于 s 与自身进行 n 次拼接
s[i]s 的第 i 项,起始为 0
s[i:j]s 从 i 到 j 的切片
s[i:j:k]s 从 i 到 j 步长为 k 的切片
len(s)s 的长度
min(s)s 的最小项
max(s)s 的最大项
s.index(x[, i[, j]])x 在 s 中首次出现项的索引号(索引号在 i 或其后且在 j 之前)
s.count(x)x 在 s 中出现的总次数

实例1

>>> "gg" in "eggs"
True
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]]

实例2

>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True
>>> r.index(10)
5
>>> r[5]
10
>>> r[:5]
range(0, 10, 2)
>>> r[-1]
18

注意 相同类型的序列也支持比较。特别地,tuple 和 list 的比较是通过比较对应元素的字典顺序。 这意味着想要比较结果相等,则每个元素比较结果都必须相等,并且两个序列长度必须相同。

序列比较

序列对象通常可以与相同序列类型的其他对象比较。
这种比较使用字典式顺序
1.首先比较开头的两个对应元素,如果两者不相等则比较结果就由此确定;2.如果两者相等则比较之后的两个元素,以此类推,直到有一个序列被耗尽。
如果要比较的两个元素本身又是相同类型的序列,则会递归地执行字典式顺序比较。
如果两个序列中所有的对应元素都相等,则两个序列也将被视为相等。
如果一个序列是另一个的初始子序列,则较短的序列就被视为较小(较少)。
对于字符串来说,字典式顺序是使用 Unicode 码位序号对单个字符排序。

下面是一些相同类型序列之间比较的例子:

(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
‘ABC’ < ‘C’ < ‘Pascal’ < ‘Python’
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, (‘aa’, ‘ab’)) < (1, 2, (‘abc’, ‘a’), 4)

注意对不同类型对象来说,只要待比较对象提供了合适的比较方法,就可以使用 < 和 > 来比较。例如,混合数值类型是通过他们的数值进行比较的,所以 0 等于 0.0,等等。否则,解释器将抛出一个 TypeError 异常,而不是随便给出一个结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值