数据类型 (程序设计语言不允许存在语法歧义,需要定义数据的形式)
字符串 str:由0个或多个字符组成的有序字符序列
- 字符串由一对单引号或一对双引号表示
- 字符串是字符的有序序列,可以对其中的字符进行索引
- 正向递增序号和反向递减序号
- 使用[]获取字符串中一个或多个字符
- 索引:返回字符串中单个字符 <字符串>[index]
- 切片:返回字符串中一段字符子串 <字符串>[start:stop:step]]
- 字符串操作符:x+ y,n * x 或 x * n,x in s
- 字符串处理函数:len(x),str(x),hex(x) 或 oct(x),chr(u),ord(x)
- 字符串处理方法:str.lower()或str.upper(),str.split(sep=None),str.count(sub),str.replace(old, new),str.center(width[,fillchar]),str.ljust(),str.strip(chars),str.join(iter),str.format()
- format()方法的格式控制:": <填充><对齐><宽度> <,><.精度><类型>"
数字类型:整数 int,浮点数 float,复数 complex
- 整数:数学中的整数
- 十进制:1010, 99, -217
- 二进制,以0b或0B开头:0b010, -0B101
- 八进制,以0o或0O开头:0o123, -0O456
- 十六进制,以0x或0X开头:0x9a, -0X89
- 浮点数:数学中的实数,带有小数部分
- 浮点数间运算存在不确定尾数 (0.1 + 0.2 = 0.30000000000000004),不确定尾数一般发生在10-16左右,round()十分有效
- round(x, d):对x四舍五入,d是小数截取位数
- 浮点数可以采用科学计数法表示 <a>e<b> 表示a*10b
- 复数:数学中的复数,a + bj 使用后缀 j 或者 J 就表示虚数部分,复数z包含实部z.real和虚部z.imag
- (扩展) 有理数:fractions.Fraction
- (扩展) 用户定制精度表示浮点数: decimal.Decimal
序列类型:序列是具有先后关系的一组元素
- 序列是一维元素向量,元素类型可以不同
- 类似数学元素序列:s0, s1, … , sn-1
- 元素间由序号引导,通过下标访问序列的特定元素
- 序列是一个基类类型,扩展为字符串类型,元组类型,列表类型
- 序列类型通用操作符:x in s,x not in s,s+ t,s*n 或 n*s,s[i],s[i: j]或s[i: j: k]
- 序列类型通用函数和方法:len(s),min(s),max(s),s.index(x) 或s.index(x, i, j),s.count(x)
*元组 tuple:是序列类型的一种扩展
- 元组是一种序列类型,一旦创建就不能被修改
- 使用小括号() 或tuple() 创建,元素间用逗号,分隔
- 可以使用或不使用小括号
- 元组继承了序列类型的全部通用操作
- 元组因为创建后不能修改,因此没有特殊操作
*列表 list:是序列类型的一种扩展,十分常用
- 列表是一种序列类型,创建后可以随意被修改
- 使用方括号[] 或list() 创建,元素间用逗号, 分隔
- 列表中各元素类型可以不同,无长度限制
- 列表类型操作函数和方法:ls[i] = x,ls[i: j: k]= lt,del ls[i],del ls[i: j: k],ls+= lt,ls*= n
- 列表类型操作函数和方法:ls.append(x),ls.clear(),ls.copy(),ls.insert(i,x),ls.pop(i),ls.remove(x),ls.reverse()
- 列表作为堆栈使用:“后进先出”,使用append()和pop()进行操作,不用指定索引。
- 列表作为队列使用:“先进先出”,collections.deque 被设计用于快速地从两端操作。使用append()和popleft()进行操作,不用指定索引。
- 列表推导式:提供了一个更简单的创建列表的方法。(squares = list(map(lambda x: x**2, range(10))) 等价于 squares = [x**2 for x in range(10)])
*range对象:
集合类型:集合是多个元素的无序组合
- 集合类型与数学中的集合概念一致
- 集合元素之间无序,每个元素唯一,不存在相同元素
- 集合元素不可更改,不能是可变数据类型
- 集合用大括号{} 表示,元素间用逗号分隔
- 建立集合类型用{} 或set()
- 建立空集合类型,必须使用set()
- 集合间操作:交(&)、并(|)、差(-)、补(^)、比较(>=<)
- 集合类型方法:.add(),.discard(),.remove,.clear(),.pop(),.copy(),len(),set(),x in S,x not in S等
字典类型:是“映射”的体现
- 键值对:是数据索引的扩展
- 字典是键值对的集合,键值对之间无序
- 采用大括号{}和dict()创建,键值对用冒号: 表示
- 字典类型操作函数和方法:del d[k],k in d,d.keys(),d.values(),d.items()
- 字典类型操作函数和方法:d.get(k, <default>),d.pop(k, <default>),d.popitem(),d.clear(),len(d)