python知识结构
python程序可以分解为模块、语句、表达式以及对象。如下所示:
- 程序由模块组成
- 模块包含语句
- 语句包含表达式
- 表达式创建并且处理对象
Python的核心数据类型
对象类型 | 表达式 |
---|---|
数字 | 1235,3.14,3+4j,分数 |
字符串 | ‘spm’,“Bob’s”,b’a\x01c’,u’sp\xc4m’ |
列表 | [1,[2,‘tree’,4.5],list(range(10))] |
字典 | {’food‘:‘spam’,‘taste’:‘yum’} |
元组 | (1,‘spam’) |
文件 | open(‘egg.txt’),open(r’C:\ham.bin’,‘wb’) |
集合 | set(‘abc’),{‘a’,‘b’,‘c’} |
其他核心 | 类型、None、布尔型 |
程序单元类型 | 函数、模块、类 |
python实现相关类型 | 已编译代码、调用栈跟踪 |
分别列表、字典、元组的最简单方法就是列表用[],字典用的{},元组用的()。列表提供其他对象的有序集合,字典通过用键值对存储对象,并且列表与字典都可以嵌套,可以随意扩展和删减能够包含任意类型的对象。
python当中创建了一个对象,它就和操作集合进行了绑定,只能精选相关操作。比如输入的为字符串类型,就只能执行字符串相关操作,也就表明python是动态类型语言(自动跟踪类型,不需要声明语言类型),也是强类型语言(只能进行适合对象类型的相关操作)。
数字
python的数字包括整数、浮点数、虚数,带分子和分母的有理数等。
python的基本数学运算如下:加法(+),乘法(),幂(**)。
在python中打印python对象有两种形式:全精度和用户友好形式。第一种形式看作对象的代码形式repr,第二种是用户友好形式的str。
字符串
字符串可以看作由单字符组成的字符序列对象,序列包含的元素有一个从左到右的顺序——序列中的数据可以通过相对位置进行存储以及存储。
序列操作
S = 'SPAM'
len(S)
#返回4,为字符串长度
S[0]
#返回S,字符串的第一个单字符
字符串当中还存在反向索引,也就是从最后一个开始:
S[-1]
#返回值M,等于S[len(S)-1]
除了简单的位置索引以外,序列还包括切片操作
S[1:3]
#返回[1,3)的内容
S[1:]
#返回序号为1到结尾的内容
S[:-1]
#返回开头到最后一位之前的内容
不可变性
字符串在python中的存储位置是不变的,也就是说不能覆盖或者改变原字符串的内容只能通过建立新的字符串来进行改变字符串的内容。拥有整个性质的还有数字、元组,二列表、字典、集合却不是这样的。
在原位置改变基于文本的数据有两种方法:首先,可以利用list,将字符串转化为列表,然后通过下标修改内容;利用bytearray将文本进行转换:
B = bytearray(b'spam')
B.extend(b'egg')
B.decode()
#输出为字符串,仅仅支持字符编码八位宽的文本
字符串编码的其他方式
利用反斜杠‘\’可以表示转义字符,此外可以利用‘’‘ ’‘’来包括多行字符串面量,并且在每一行中添加换行符。在python中嵌入HTML和XML和JSON中有很大作用。可以利用r去除转义字符功能,如(r’c:\text\new’)
列表
列表作为序列有正常的序列操作:
L =['45','AA']
len(L)
#返回2
#切面操作
L[0]
L[0:-1]
L*2
#复制一遍['45','AA','45'.AA']
特定类型的操作
列表没有固定类型的约束,并且没有固定的大小:
L.append('NI')
#在L列表后面添加新元素
L.pop(2)
#移除偏移量为2的元素
L.sort()
按照升序对列表进行排列
L.reverse()
对列表进行翻转
嵌套
在列表当中还能添加列表、字典等进行多层嵌套,如M[[1,2,3],[4,5,6]],想要访问5的话只需要读取M[2][2]即可读取M当中都5。
推导
又叫做列表推导式,可以用来处理数字矩阵,如以下代码可以获得第二列
M = [[1,2,3],[4,5,6],[7,8,9]]
col2 = [row[1] for row in M]
#约等于 for row in M
col2.append(row[1])
字典
字典不是序列而是一种映射,映射同样·是一个其他对象的集合,它们通过键而不是相对位置来存储对象,因此没有可靠的从左到右的顺序。利用键访问并且也可以实现重返嵌套。
不存在的键:if测试
字典当中的in关系表达式用来查询字典中的键是否存在,并且可以通过if语句对结果进行分支操作,如下所示:
if not 'f' in D:
print('missing')
键的排序:for循环
字典不是序列,因此不能按照顺序依次打出,如果需要按照顺序打出的解决办法有,利用列表收集字典的keys,使用列表的sort方法进行排序。
ks = list(D.keys())
Ks.sort()
for key in Ks
print(key,'=>',D[key])
元组
像一个不可改变的列表,支持任意类型以及任意嵌套,支持常见的序列操作,并且有两个专用方法:
T.index(a)
#获得a的序号
T.count(a)
#a出现的次数
文件
python当中没有特殊的字面量语法创建文件,要创建一个文件的对象,需要调用内置的open函数以字符串的形式传递给他一个外部文件名以及一个可选的表示处理模式的字符串。
#创建一个文本输出文件,以及利用‘w’处理模式字符串来写入数据
f = open('data.txt','w')
f.write('Hello\n')
#返回输入的字符串字符数量
f.close()
可以利用’r’处理模式打开文件,读取输入(忽略模式的情况下,默认为’r’)