Python内置对象预览
对象类型 | 例子常量/创建 |
数字 | 1234, 3.1415, 999L, 3+4j, Decimal |
字符串 | ‘spam', "guido's" |
列表 | [1, [2, 'three'], 4] |
字典 | {'food' : 'spam', 'taste' : 'yum'} |
元祖 | (1, 'spam', 4, 'U') |
文件 | myfile = open('eggs', 'r') |
其他类型 | 集合,类型,None,布尔型 |
上表中的对象类型被称作是Python的核心对象类型。
一、数字
整数(int)、浮点数(float)以及更为少见的类型(无线精度“长”整型,有虚部的复数,固定精度的十进制数以及集合等)。
运算:一般数学运算,“*”代表乘法,“**”代表乘方……
二、字符串
就像任意字符的集合一样,字符串时用来记录文本信息的。它们是在Python中作为序列(也就是说,一个包含其他对象的有序集合)之一。序列中的元素包含了一个从左到右的顺序——序列中的元素根据它们的相对位置进行存储和读取。从严格意义上来说,字符串是一个单字符串的序列,其他类型的序列还包括了列表和元祖。
字符串的操作:索引和分片
1、索引:在Python中,索引时按照从最前面的偏移量进行编码的,也就是从0开始,第一项索引为0,第二项索引为1.以此类推。
Eg:>>>S = 'spam'
>>>len(S)
4
>>>S[0]
's'
字符串还支持反向索引,从最后一个开始,且一个负的索引号简单地与字符长度相加,得到的两个操作是等效的。
Eg:>>>S[-1]
'm'
>>>S[len(S)-1]
'm'
2、分片(slice):这是一种一步就能提取整个分片的方法。
分片的一般形式为:X[I:J],表示“取出在X中从偏移量为I,直到J但是不包括J的内容”。结果就是返回一个新的对象,左边界为0。
Eg:>>>S
'spam'
>>>S[1:3]
'pa'
Python允许字符串包括在单引号或是双引号中(它们代表着相同的东西)。它也能够在三个引号(单引号或双引号)中表示多行字符串的形式,当采用这种形式的时候,所有的行都合并在一起,并在每一行的末尾增加了换行符。
函数应用:group()与groups()
正则表达式中,group()用来提出分组截获字符串,()用来分组。
一般,m.group(N)返回第N组括号匹配的字符,而m.group() == m.group(0) == 所有匹配字符,与括号无关,这是API规定的;
m.groups()返回所有括号匹配的字符,以元祖tuple格式,即:
m.groups() == (m.group(0), m.group(1), ……)
三、列表
Python的列表对象时这个语言提供的最通用的序列。列表是一个任意类型的对象的位置相关的有序集合,它没有固定大小。不像字符串,其大小是可变的,通过对偏移量进行赋值及其他各种列表方法进行调用,列表确实能够修改其大小。
操作:索引、分片,其他函数操作。
append():在被选元素的结尾(仍然在内部)插入指定内容。
Eg: >>> L = [123, 'spam', 1.23]
>>> len(L)
3
>>> L[0]
123
>>> L[:-1]
[123, 'spam']
>>> L + [4, 5, 6]
[123, 'spam', 1.23, 4, 5, 6]
>>> L.append('NI')
>>> L
[123, 'spam', 1.23, 'NI']
pop(N):用于删除并返回数组的倒数第N个元素;
Eg: >>> L.pop(2)
1.23
sort():默认按照升序对列表进行排序;
reverse():对列表进行翻转。
Eg: >>> M = ['bb', 'aa', 'cc']
>>> M.sort()
>>> M
['aa', 'bb', 'cc']
>>> M.reverse()
>>> M
['cc', 'bb', 'aa']
边界检查:尽管列表没有固定的大小,Python仍不允许引用不存在的元素。
列表解析:它是一种通过在一个序列中运行一个表达式而创建的一个新列表,每次一个,从左至右。列表解析是写在方括号中的,并且有表达式和循环结构都使用了一个变量名。
Eg:
>>> M = [[1, 2, 3], ]
>>> M = [[1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]]
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> col2 = [row[1] for row in M]
>>> col2
[2, 5, 8]
>>> [row[1] + 1 for row in M]
[3, 6, 9]
>>> [row[1] for row in M if row[1] % 2 == 0]
[2, 8]
四、字典
字典不是序列,而是一种映射。映射是一个其他对象的集合,但是它们是通过键而不是相对位置来存储的。实际上,映射并没有任何可靠的从左至右的顺序。也具有可变性——可以改变,并可以随需求增大或减小,就像列表那样。
映射操作:作为常量编写时,字典编写在大括号中,并包含了一系列的“键:值”对。
Eg:
>>> D = {'food':'spam', 'quantity':4, 'color':'pink'}
>>> D['food']
'spam'
>>> D['color']
'pink'
>>> D['quantity'] += 1
>>> D['quantity']
5
注:因为字典不是序列,它们并不包含任何可靠的从左至右的顺序。这意味着如果我们建立一个字典,并将它打印出来,他的键也许会以我们输入时的时间不同的顺序出现。
五、元组
元组对象基本上就像一个不可以改变的列表。就像列表一样,元组是序列,但是它具有不可变性,和字符串类似。
六、文件
文件对象是Python代码对电脑上外部文件的主要接口。虽然文件是核心类型,但是它有一些特殊:没有特定的常量语法创建文件。你调用内置的open函数创建一个文件对象,以字符串的形式传递给它一个外部的文件名以及一个处理模式的字符串。
七、其他核心类型
集合等。
Python脚本中能够处理的所有的事情都是某种类型的对象。
参考文献:《Python学习手册 第三版》