ljzsdut
GitHubToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage

06 序列概述

python中的序列有字符串、列表、元组

序列的特点是:有序(元素从左到右排序)、索引、分片(序列中的元素根据他们的相对位置进行存储和读取)

索引

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

​ 在Python中,还反向索引,从最后一个开始索引,最后一个元素的索引号为-1,倒数第二个索引为-2(正向索引是从左边开始计算,反向索引是从右边开始计算)。正反向索引的关系:元素个数=正向索引+反向索引的绝对值,例如str[-1]=str[len(str)-1]

​ 序列通过str[index]的方式来指定元素。值得注意的是,我们能够在方括号中使用任意表达式,而不仅仅是使用数字常量——可以使用一个常量、一个变量或任意表达式。Python的语法在这方面是完全通用的。

切片

除了简单地从位置进行索引,序列也支持一种所谓分片(slice)的操作,这是一种能够一次提取整个序列中某个片段的方法。分片操作的结果返回一个新的对象。例如:seq[i:j],i表示分片的起始元素的索引号,缺省时为0;j表示结束索引号,缺省时为len(seq)。需要注意的是,分片操作所取的元素不包含j元素。通俗地将就是seq[i:j]截取索引号为i≤index<j的元素,即前闭后开区间。例如:

>>> str1='spam'
>>> print str1
spam
>>> print str1[1:3]
pa
>>> print str1[1:-1]
pa
>>> print str1[1:]
pam
>>> print str1[1:len(str1)]
pam
>>> print str1[:-1]
spa
>>> print str1[:]
spam

序列的+运算

加号(+)对于不同的对象有不同的意义:对于数字为加法,对于字符串为合并,对于序列为拼接。

这是Python的一般特性,即“多态”。简而言之,一个操作的意义取决于被操作的对象。正如将在学习动态类型时看到的那样,这种多态的特性给Python代码带来了很大的简洁性和灵活性。由于类型并不受约束,Python编写的操作通常可以自动地适用于不同类型的对象,只要它们支持一种兼容的接口(就像这里的+操作一样)。这成为Python中很重要的概念。此外,str1*3 等同于str1+str1+str1

>>> s1=[1,2,3]
>>> s2=[4,5]
>>> s3=s1+s2
>>> print s3
[1, 2, 3, 4, 5]

>>> num1=1
>>> num2=2
>>> num3=num1+num2
>>> print num3
3

其他序列操作

len() :

min():字符按照assic比较大小

max()

sum()只适用于数字序列

all(iterable):检查序列中所有项是否为True

any(iterable):任意一项为True则返回True

【说明】:以上为序列的通用操作,所有的序列类型(包括字符串、列表、元组)都可以进行以上操作。除此之外,每种特定的序列对象还有自己特定的操作,我们称之为“方法”。注意区分序列的“操作”与“方法”,序列操作是通用的,但方法不通用:可作用于多种类型的通用型操作都是以内置函数或表达式的形式出现的,例如,len(X),X[0],但是类型特定的操作是以方法调用的形式出现的,例如,aString.upper()。