首页 > 编程语言 > 详细

Python学习之路11——序列

时间:2015-03-25 09:07:58      阅读:276      评论:0      收藏:0      [点我收藏+]

序列

成员是有序排列的,并且可以通过下标偏移量访问到它的一个或者几个成员,这类Python类型称为序列。字符串,列表,元组属于序列。

标准类型操作符一般都能适用于所有的序列类型。

1序列类型操作符:

下面列出对所有序列类型都适用的操作符。操作符是按照优先级从高到低的顺序来排列的。

1.1成员关系操作符(in, not in)

成员关系操作符是用来判断一个元素是否属于一个序列的。in/not 操作符的返回值一般来讲就是True/False,满足成员关系就返回True,否则返回False。语法如下:
对象 (not) in 序列,下面以列表为例:
>>> aList = ['test', 'demo', 'foo']
>>> 'demo' in aList
True
>>> 'error' in aList
False
>>> 


1.2连接操作符(+)

这个操作符允许我们把一个序列和另一个相同类型的序列做连接。语法如下:
sequence1 + sequence2
该表达式的结果是一个包含sequence1 和 sequence2的内容的新序列。下面以两个字符串为例:
>>> str1 = 'str1'
>>> str2 = 'str2'
>>> str1 + str2
'str1str2'

1.3重复操作符(*)

当你需要一个序列的多份拷贝是,重复操作符非常有用,语法如下:
sequence * copies_int
copies_int 必须是一个整型。该操作符返回一个新的包含多份原对象拷贝的对象。以字符串为例:
>>> str = 'just for fun!'
>>> str
'just for fun!'
>>> str2 = str * 5
>>> str2
'just for fun!just for fun!just for fun!just for fun!just for fun!'

1.4切片操作符([],[:],[::])

简单的讲,序列类型就是包含一些顺序排列的对象的一个结构。你可以用方括号加一个下标的方式访问它的每一个元素,或者通过在方括号中用冒号把开始下标和结束下标分开的方式来访问一组连续的元素。我们使用切片操作符就可以实现我们上面说的操作。
访问某一个元素的语法如下:
sequence[index]
sequence是序列的名字,index是偏移量。序列的下标是从0开始的。另外,python的序列还可以使用负索引,范围是-1到序列的负长度,正索引以序列的开始为起点,而负索引以序列的介绍为起点。
试图访问一个越界的索引会引发一个异常。用例子来展示,更直观:
>>> aList = ['a', 'b', 'c' , 'd']
>>> aList
['a', 'b', 'c', 'd']
>>> aList[0]
'a'
>>> aList[2]
'c'
>>> aList[-1]
'd'
>>> aList[-4]
'a'
>>> aList[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> 
接下来介绍如何一次得到多个元素。语法如下:
sequence[start_index : end_index]
通过这种方式我们可以得到从起始索引到结束索引(不包括结束索引)之间的连续的元素。start_index 和 end_index 都是可选的,如果没有给出start_index ,则默认从最开始处开始,如果没有给出end_index,则默认为到最末尾结束(这时会包含最后一个元素)。例子;

>>> aList
['a', 'b', 'c', 'd']
>>> aList[1:3]
['b', 'c']
>>> aList[:3]
['a', 'b', 'c']
>>> aList[1:]
['b', 'c', 'd']
>>> 

用步长索引来进行扩展的切片操作
序列的最后一个切片操作是扩展切片操作,它是用多出来的第三个索引值被用作步长参数。语法如下:
sequence[start_index:end_index:step],可以利用步长参数来实现一些很炫的功能:
>>> myList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> myList
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> myList[::2]
[0, 2, 4, 6, 8, 10]
>>> myList[::4]
[0, 4, 8]
>>> myList[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

2序列内建函数(BIF)

2.1类型转换

内建函数list(),str() 和 tuple()被用来在各种序列类型之间转换。
list(iter) :把可迭代对象转换为列表
str(obj) : 把对象转换成字符串对象
unicode(obj) : 把对象转换成Unicode字符串
basestring() : 抽象工厂函数,其作用仅仅是为str()和Unicode()函数提供父类,所以不能被实例化,也不能被调用。
tuple(iter) : 把一个可迭代对象转换成一个元组对象

2.2可操作序列内建函数

enumerate(iter) : 接受一个可迭代对象作为参数,返回一个enumerate对象(同时也是一个迭代器),该对象生成有iter每个元素的index值和item值组成的元组。
len(seq):返回seq的长度
max(iter, key = None) or max(arg1,arg2,..,key = None) : 返回最大值,如果指定了key,key必须是一个可以传给sort()方法的,用于比较的回调函数。
min(iter, key = None) or max(arg1,arg2,..,key = None) : 返回最小值,如果指定了key,key必须是一个可以传给sort()方法的,用于比较的回调函数。
reversed(seq) : 接受一个序列作为参数,返回一个以逆序访问的迭代器
sorted(iter, func = None, key = None, reverse=False) : 接受一个可迭代对象作为参数,返回一个有序的列表
sum(seq,init=0): 返回seq和可选参数init的总和
zip([it0,it1,...,itN]): 返回一个列表,其第一个元素是it0,it1..这些可迭代对象的第一个元素组成的一个元组,以此类推。





Python学习之路11——序列

原文:http://blog.csdn.net/u012088213/article/details/44598671

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!