笔记:序列通用操作(1)

来源:互联网 发布:数据备份 编辑:程序博客网 时间:2024/06/06 09:53

序列的通用操作

Python包含6中内建的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象

  1. 序列的索引及运算
    • 索引 在索引中开始元素序号都是从0开始

对列表的索引

>>> a=[1,2,3,4,5]>>> a[1]2

对字符串的索引

>>> m='hello'>>> m[1]'e'

对元组的索引

>>> a=(1,2,3,4)>>> a[1]2
  • 运算(加法和乘法)

加法运算:使用加法运算,可以将序列连接起来。

对列表的连接

>>> [1,2,3,4]+[5,6,7][1, 2, 3, 4, 5, 6, 7]

对字符串的连接

>>> 'Hello'+' '+'World''Hello World'

对元组的连接

>>> a=(1,2,3,4)>>> b=(5,6,7,8)>>> a+b(1, 2, 3, 4, 5, 6, 7, 8)

但,如果采用两种不同类型的序列相加,如列表与字符串相加,则不可以。

>>> [1,2,3,4]+'Hello'Traceback (most recent call last):  File "<pyshell#4>", line 1, in <module>    [1,2,3,4]+'Hello'TypeError: can only concatenate list (not "str") to list

乘法运算:该操作,会产生新的序列。

列表的乘法

>>> b=[1,2]>>> b*5[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

字符串的乘法

>>> 'Hello'*3'HelloHelloHello'

元组的乘法

>>> a=(1,2,3,4)>>> a*2(1, 2, 3, 4, 1, 2, 3, 4)

如果,要初始化一个空的列表,但是又有元素数量限制怎么办?如初始化一个包含10个元素的列表。

None,是Python的内建值,所表示的含义是,这里没有东西没有任何东西。

可采用如下方法:

>>> sequence=[None]*4>>> sequence[None, None, None, None]

但是,对产生一个新有限大小的元组根本没有任何意义,因为元组的不可更改特性,即使产生了也不能够更改

  1. 序列的切片方法

下述的切片方法,以列表为例

  • 正序切片
>>> num=[1,2,3,4,5,6,7,8,9,10]>>> num[1:5][2, 3, 4, 5]

从上述操作可以看,切片的操作可以看做是数学上的取一子集。而索引号可以看做是子集的上下限。那么上述的操作可以用如下的数学符号表示:

[a,b)

若要取最后一个元素,可以采用如下索引号

b+1

  • 倒序切片
>>> num[-4:][7, 8, 9, 10]

倒序切片,是将元素在列表的从右往左索取。此处,采用数学的语言方法表示是

(a,b]

  • 采用步长方式切片
>>> number=[1,2,3,4,5,6,7,8,9,10]>>> number[0:10:2][1, 3, 5, 7, 9]

上述采用步进方式进行切片,用数学语言表示,则可表示为

munber[a:b:Step]

在范围 [a,b]之间按照步进的间隔取值。而且显示结果也是顺序显示。
对于步进值为负数,则按照倒叙显示。如下:

>>> number[10:2:-2][10, 8, 6, 4]

对于上述的写法,需要注意的是,如果采用负值步进,那么索引号也应该从高值到低值的顺序写,否则则会产生空的列表。

>>> number[0:10:-2][]

不过如此也不失为产生一个空的列表方法。但是应该很浪费内存吧。运行速度也慢了。

原创粉丝点击