本文共 3201 字,大约阅读时间需要 10 分钟。
首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!
我会在当天或者第二天及时回复,并且改进~~在Python中,最基本的数据结构是序列,
序列包含:其他的内建序列类型有:
一、通用序列操作
所有的序列类型都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘及检查某个元素是否属于序列的成员。1.1 索引
>>> name = 'hongxue'>>> name[0]'h'>>> name[0:3]'hon'这就是索引,字符串是一个由字符组成的序列。索引0指向第1个元素,在当前例子中就是h可以通过索引获取元素>>> str = raw_input('Year: ')[3]Year:2015>>> str'5'
1.2 分片
索引是访问单个元素,分片与索引类似,但是它来访问的是一定范围内的元素,分片通过冒号隔开的两个索引实现:分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第1个索引是要提取的第1个元素的编号,而最后的索引则是分片之后剩余部分的第1元素的编号。
(1) 优雅的捷径>>> numbers = [1,2,3,4,5,6,7,8,9,10]>>> numbers[0:3][1,2,3]>>> numbers[3:8][4,5,6,7,8]>>> numbers[2:7][3,4,5,6,7]numbers[-3:-1][8,9]numbers[-3:][8,9,10]numbers[:3][1,2,3]numbers[:][1,2,3,4,5,6,7,8,9,10]分片示例:>>> name = raw_input('Please input your name:')[0:4]Please input your name:hongxue>>> print name'hong'
(2) 更大的步长
进行分片的时候,分片的开始和结束点需要进行指定(不管是直接还是间接)。而另外一个参数–步长通常都是隐式设定的。默认为1,则可以手动进行设置>>> print numbers[:][1,2,3,4,5,6,7,8,9,10]>>> numbers[0:10:2][1,3,5,7,9]>>> numbers[3:6:3][4]>>> numbers[::4][1,5,9]当然,步长可以是负数,此时分片从右到左提取>>> numbers[8:3:-1][9,8,7,6,5]>>> numbers[10:0:-2]['10,8,6,4,2']>>> numbers[::-2][10,8,6,4,2]>>> numbers[5::-2][6,4,2]>>> numbers[:5:-2][10,8]对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素,对于一个负数步长,Python会从序列的尾部开始向左提取元素,直到第一个元素。
1.3 序列相加
通过使用加运算符可以进行序列的连接操作:>>> [1,2,3] + [4,5,6][1,2,3,4,5,6]>>> x = ['hong']>>> y = ['xue']>>> x + y['hong','xue']当然,列表和字符串是无法连接在一起的,尽管它们都是序列。两种类型相同的序列才能进行连接操作,例如:>>> x = '123'>>> y = ['4,5,6']>>> x + yTraceback (most recent call last): File "", line 1, in TypeError: cannot concatenate 'str' and 'list' objects
1.4 乘法
用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复n次>>> 'Python' * 5'PythonPythonPythonPythonPython'>>> [30] * 10'30,30,30,30,30,30,30,30,30,30'
None、空列表和初始化
空列表可以简单的通过两个中括号进行表示,里面什么也没有。但是,如果想创建一个占用十个元素空间,却不包括任何有用内容的列表,可以想前面那样,[42] * 10,这样会更加实际一些。然而,有时候可能会需要一个值来代表空值—意味着里面没有任何东西,这个时候就需要用到None,None是Python的内键值,它的确切含义是”这里什么也没有”。创建占用十个元素的空间>>> [] * 10[]创建一个空值>>> Value = [None] * 10>>> Value[None,None,None,None,None,None,None,None,None,None]
代码清单 序列(字符串)乘法表示sentence = raw_input('Sentence: ')screen_width = 80text_width = len(setence)box_width = text_width + 6left_margin = (screen_width - box_width) / 2print print ' ' * left_margin + '+' + '-' * (box_width-2) + '+'print ' ' * left_margin + '| ' + ' ' * text_width + '|' print ' ' * left_margin + '| ' + sentence + '|'print ' ' * left_margin + '| ' + ' ' * text_width + '|'print ' ' * left_margin + '+' + ‘-’ * (box_width-2) + '+'print
1.5 成员资格
为了检查一个值是否在序列中,可以使用in运算符,这个运算符检查某个条件是否为真,然后返回相应的值,也叫做’布尔值’条件为真返回True条件为假返回False>>> permissions='rw'>>> 'r' in permissions >>> 'w' in permissions>>> 'x' in permissions#检查用户是否在name列表中>>> name = ['hongxue','xiaomao','yixiao']>>> 'hongxue' in name>>> 'xiaomao' in name
#检查用户名和PIN码>>> database = [['hongxue','123'],['yixiao','456'],['xiaomao','789']]>>> username = raw_input('User name: ')>>> pin = raw_input('PIN code: ')>>> if [username,pin] in database : print 'Access granted'
1.6 长度、最小值和最大值
内建函数len、min和max非常有用len函数返回序列中所包含元素的数量min函数返回序列中最小的元素max函数返回序列中最大的元素numbers = [456,214,999]>>> len(numbers) #返回元素个数3>>> min(numbers) #返回最小元素214>>> max(numbers) #返回最大元素999
转载地址:http://mprel.baihongyu.com/