返回介绍

字符串

发布于 2024-01-29 22:24:17 字数 2006 浏览 0 评论 0 收藏 0

就像任意字符的集合一样,字符串是用来记录文本信息的。它们是在Python中作为序列(也就是说,一个包含其他对象的有序集合)提到的第一个例子。序列中的元素包含了一个从左到右的顺序——序列中的元素根据它们的相对位置进行存储和读取。从严格意义上来说,字符串是单个字符的字符串的序列,其他类型的序列还包括列表和元组(稍后介绍)。

序列的操作

作为序列,字符串支持假设其中各个元素包含位置顺序的操作。例如,如果我们有一个含有四个字符的字符串,我们通过内置的len函数验证其长度并通过索引操作得到其各个元素。

在Python中,索引是按照从最前面的偏移量进行编码的,也就是从0开始,第一项索引为0,第二项索引为1,依此类推。

注意我们在这里是如何把字符串赋给一个名为S的变量的。我们随后将详细介绍这是如何做到的(特别是在第6章中),但是,Python变量不需要提前声明。当给一个变量赋值的时候就创建了它,可能赋的是任何类型的对象,并且当变量出现在一个表达式中的时候,就会用其值替换它。在使用变量的值之前必须对其赋值。我们需要把一个对象赋给一个变量以便保存它供随后使用,要学习本章内容,知道这一点就足够了。

在Python中,我们能够反向索引,从最后一个开始(正向索引是从左边开始计算,反向索引是从右边开始计算)。

一般来说,负的索引号会简单地与字符串的长度相加,因此,以下两个操作是等效的(尽管第一个要更容易编写并不容易发生错误):

值得注意的是,我们能够在方括号中使用任意表达式,而不仅仅是使用数字常量——只要Python需要一个值,我们可以使用一个常量、一个变量或任意表达式。Python的语法在这方面是完全通用的。

除了简单地从位置进行索引,序列也支持一种所谓分片(slice)的操作,这是一种一步就能够提取整个分片(slice)的方法。例如:

也许认识分片的最简单的办法就是把它们看做是从一个字符串中一步就提取出一部分的方法。它们的一般形式为X[I:J],表示“取出在X中从偏移量为I,直到但不包括偏移量为J的内容”。结果就是返回一个新的对象。例如,上边的最后一个操作,给我们在字符串S中从偏移1到2(也就是,3-1)的所有字符作为一个新的字符串。效果就是切片或“分离出”中间的两个字符。

在一个分片中,左边界默认为0,并且右边界默认为分片序列的长度。这引入了一些常用法的变体:

注意负偏移量如何用作分片的边界,在上面最后一个操作中如何有效地拷贝整个字符串。正像今后将学到的那样,没有必要拷贝一个字符串,但是这种操作形式在列表这样的序列中很有用。

最后,作为一个序列,字符串也支持使用加号进行合并(将两个字符串合成为一个新的字符串),或者重复(通过再重复一次创建一个新的字符串):

注意加号(+)对于不同的对象有不同的意义:对于数字为加法,对于字符串为合并。这是Python的一般特性,也就是我们将会在本书后面提到的多态。简而言之,一个操作的意义取决于被操作的对象。正如将在学习动态类型时看到的那样,这种多态的特性给Python代码带来了很大的简洁性和灵活性。由于类型并不受约束,Python编写的操作通常可以自动地适用于不同类型的对象,只要它们支持一种兼容的接口(就像这里的+操作一样)。这成为Python中很重要的概念。关于这方面,你将会在后面的学习中学到更多的内容。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文