2. Python 数据类型
数据类型
基本数据类型
数字(Number)
整型(int)
- 整数类型共有4种进制表示:十进制、二进制、八进制和十六进制
- 默认情况整数采用十进制,其他进制需要增加引导符号
进制种类 | 引导符号 | 描述 |
---|---|---|
十进制 | 无 | 默认情况 |
二进制 | 0b或0B | 由字符0和1组成 |
八进制 | 0o或0O | 由字符0到7组成 |
十六进制 | 0x或0X | 由字符0到9、a到f、A到F组成 |
浮点型(float)
-
浮点数类型与数学中实数的概念一致,表示带有小数的数值
-
Python语言要求所有浮点数必须带有小数部分(可以是0),一区分浮点数和证书类型
-
浮点数有2中表示方法:十进制表示和科学计数法表示
科学计数法使用字母e或E作为幂的符号,以10为基数,含义如下:
<a>e<b>=a*10b^2
- 由于计算机内部采用二进制运算,浮点数进行超过15位数字计算会产生误差
使用整数表达浮点数的方法是高精确度运算的基本方法之一。
- 对于高精度科学计算外的绝大部分运算而言,浮点数类型已足够可靠,一般认为浮点数类型没有范围限制,运算结果准确
布尔型(bool)
- True 和 False 为Python关键字
- True 和 False的值分别是 1和 0,可以和数字相加
复数(complex)
- 复数类型表示数学中的复数
复数可以看作是二元有序实数对(a,b),表示为a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。
- Python 语言中,复数的虚部通过后缀"j"或"J"表示
1.23e-4+5.67e+89j
- 复数类型中实数部分和虚数部分的数值都是浮点数类型,对于实数z,可用z.real和z.imag分别获得它的实部和虚部
(1.23e-4+5.67e+89j).real
(1.23e-4+5.67e+89j).imag
字符串(String)
- 字符串(string)类型是字符的序列表示,在程序中表示文本
- 字符串是字符的序列,可以按照单个字符或字符片段进行索引
- 字符串包括正向递增序号和反向递减序号两种序号体系
- 正向递增序号:0 ~ L-1,索引值以 0 为开始值
- 反向递减序号:-L ~ -1,索引值以 -1 为从末尾的开始位置
- 字符串提供区间访问方式,采用[N:M]格式。表示从字符串中从N到M(不包含M)的字符串,可以混合使用正向递增序号和反向递减序号
变量[头下标:尾下标]
- 单引号字符串:'单引号表示可以使用"双引号"作为字符串的一部分'
- 双引号字符串:"双引号表示可以使用'单引号'作为字符串的一部分"
- 三引号字符串:'''三引号表示可以使用"双引号"、'单引号'作为字符串的一部分
也可以换行 ''' - Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符,始终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式。
- 字符串比较本质上是字符串对应Unicode编码的比较
- 反斜杠(\)是转义字符,在字符串前面添加一个 r,反斜杠不发生转义
转义字符
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
- 加号 (+) 是字符串的连接符, 星号 (*)表示复制当前字符串,后续数字为复制的次数。
字符串运算符
操作符 | 描述 |
---|---|
+ | 字符串连接 |
* | 重复输出字符串 |
[] | 通过索引获取字符串中字符 |
[ : ] | 截取字符串中的一部分 |
in | 成员运算符:如果字符串中包含给定的字符返回 True |
not in | 成员运算符:如果字符串中不包含给定的字符返回 True |
r/R | 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 |
% | 格式字符串 |
字符串格式化
-
字符串格式化使用函数 str.format() 实现
-
字符串通过format()方法进行格式化处理
字符串格式化用于解决字符串和变量同时输出时的格式安排
format()方法的基本使用
- 字符串format()方法的基本使用格式:<字模板符串>.format(<逗号分隔的参数>)
- 模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置(槽用{}表示,如果{}中没有序号,则按照出现顺序替换)
- 如需输入{},采用{{表示{;}}表示}
"圆周率{{{1}{2}}}是{0}".format("无理数",3.1415926,"……")
format()方法的格式控制
- format()方法模板字符串的槽除了包括参数序号,还可包括格式控制信息。槽内部样式:{<参数序号>:<格式控制标记>}
- 格式控制标记用于控制参数显示时的格式
: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
---|---|---|---|---|---|---|
引导符号 | 用于填充的单个字符 | <左对齐、>右对齐、^居中对齐 | 槽的设定输出宽度 | 数字的千位分隔符 适用于整数和浮点数 | 浮点数小数部分的精度或字符串的最大输出长度 | 整数类型b,c,d,o,x,X;浮点数类型e,E,f,% |
- <填充>指宽度内除了参数外的字符采用什么方式表示,默认为空格
- <对齐>指参数在宽度内输出时的对齐方式
- <宽度>指当前槽的设定输出字符宽度,若实际参数长度比设定值大,则使用参数实际长度
- <,>用于显示数字类型的千分位分隔符
- <.精度>对于浮点数,表示小数部分输出的有效位数;对于字符串,表示输出的最大长度
- <类型>表示输出整数好浮点数类型的格式规划。
对于整数类型
- b:整数的二进制;
- c:整数对应的Unicode字符;
- d:整数的十进制;
- o:整数的八进制
- x:整数的小写十六进制
- X:整数的大写十六进制
对于浮点数类型
- e:浮点数对应的小写字母e的指数形式
- E:浮点数对应的大写字母E的指数形式
- f:浮点数的标准浮点形式
- %:浮点数的百分形式
字符串格式化的另一种方法
与 C 中 sprintf 函数一样的语法
- Python 格式化字符串的输出,将一个值插入到一个有字符串格式符 %s 的字符串中。
python字符串格式化符号
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用) |
字符串操作
基本的字符串操作符(共5个)
操作符 | 描述 |
---|---|
x+y | 连接两个字符串x与y |
x*n或n*x | 复制n次字符串x |
x in s | 如果x是s的子字符串,返回Ture,否则返回False |
str[i] | 索引,返回第i个字符 |
str[N:M] | 切片,返回索引第N到第M个字符 |
内置的字符串处理函数(共6个)
函数 | 描述 |
---|---|
len('x') | 返回字符串x的长度,也可返回其他组合数据类型元素个数 |
str('x') | 返回任意类型x所对应的字符串形式 |
chr(x) | 返回Unicode编码x对应的单字符 |
ord('x') | 返回单字符表示的Unicode编码 |
hex(x) | 返回整数x对应十六进制数的小写形式字符串 |
oct(x) | 返回整数x对应八进制数的小写形式字符串 |
内置的字符串处理方法(常用16个)
- 在Python解释器内部,所有数据类型都采用面向对象的方式实现,封装为一个类
- 字符串是一个类,具有类似<a>.<b>()形式的字符串处理函数,称为方法
方法 | 描述 |
---|---|
str.lower() | 返回字符串str的副本,全部字符小写 |
str.upper() | 返回字符串str的副本,全部字符大写 |
str.islower() | 当str所有字符都是小写时,返回Ture,否则返回False |
str.isprintable() | 当str所有字符都是可打印的,返回Ture,否则返回False |
str.isnumeric() | 当str所有字符都是数字时,返回Ture,否则返回False |
str.isspace() | 当str所有字符都是空格,返回Ture,否则返回Flase |
str.endswith(suffix[,start[,end]]) | str[start:end]以suffix结尾返回Ture,否则返回Flase |
str.srartswith(prefix[,start[,end]]) | str[start:end]以prefix开始返回Ture,否则返回Flase |
str.split(sep=None,maxsplit=-1) | 返回一个列表,由str根据sep被分割的部分构成 |
str.count(sub[,start[,end]] | 返回str[start:end]中sub子串出现的次数 |
str.replace(old,new[,count]) | 返回字符串str的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换 |
str.center(width[,fillchar]) | 字符串居中函数 |
str.strip([chars]) | 返回字符串str的副本,在其左侧和右侧去掉chars中列出的字符 |
str.zfill(width) | 返回字符串str副本,长度为width。不足部分在其左侧添加0 |
str.format() | 返回字符串str的一种排版格式 |
str.join(iterable) | 返回一个新字符串,由组合数据类型iterable变量的每个元素组成,元素间用str分隔 |
附表:内置的字符串处理方法
方法 | 描述 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
find(str, beg=0 end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False.. |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
lower() | 转换字符串中所有大写字符为小写 |
lstrip() | 截掉字符串左边的空格或指定字符。 |
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
max(str) | 返回字符串 str 中最大的字母。 |
min(str) | 返回字符串 str 中最小的字母。 |
replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
rstrip() | 删除字符串字符串末尾的空格. |
split(str=" ", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
splitlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
startswith(str, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
upper() | 转换字符串中的小写字母为大写 |
zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
组合数据类型
组合数据类型为多个类型或不同类型数据提供单一表示,使数据操作更有序、更容易。组合数据类型分为序列类型、集合类型和映射类型3类。
序列类型
序列类型是一维元素向量,元素间存在先后关系,通过序号访问,元素之间不排他
- 序列都可以进行的操作包括索引,切片,加,乘,检查成员。
操作符或函数 | 描述 |
---|---|
x in s | 如果x是s的元素,返回True,否则返回Flase |
x not in s | 如果x不是s的元素,返回True,否则返回Flase |
s+t | 连接s和t |
s*n或n*s | 将序列s复制n次 |
s[i] | 索引,返回序列s的第i个元素 |
s[i:j] | 分片,返回包含序列s第i到第j(不含)个元素的子序列 |
s[i:j:k] | 步骤分片,返回包含序列s第i到第j(含)个元素以k为步长的子序列 |
len(s) | 序列s的元素个数(长度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x[,i[,j]]) | 序列s中从i开始到j位置第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |
序列类型的通用操作符和函数
操作符或函数 | 描述 |
---|---|
x in s | 如果x是s的元素,返回True,否则返回Flase |
x not in s | 如果x不是s的元素,返回True,否则返回Flase |
s+t | 连接s和t |
s*n或n*s | 将序列s复制n次 |
s[i] | 索引,返回序列s的第i个元素 |
s[i:j] | 分片,返回包含序列s第i到第j(不含)个元素的子序列 |
s[i:j:k] | 步骤分片,返回包含序列s第i到第j(含)个元素以k为步长的子序列 |
len(s) | 序列s的元素个数(长度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x[,i[,j]]) | 序列s中从i开始到j位置第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |
字符串(str)
字符串可以看做是单一字符的有序组合,属于序列类型
- 字符串被看做基本数据类型
元组(tuple)
元组是包含零个或多个数据项的不可变序列类型
- 元组采用逗号和圆括号(可选)表示,元素间用逗号隔开
- 元组中的元素类型可以不相同
- 元组的元素不能修改,但可包含可变的对象,比如列表
- 一个元组可作另一个元组的元素,可采用多级索引获取信息
>>>X=('a','b','c') #等同X='a','b','c'
>>>Y=(1,2,3,X)
>>>Y[3][2] #多级索引
'c'
- 构造包含 0 个或 1 个元素的元组比较特殊
>>> tup1 = () #空元组
>>> tup2 = (1,) #1个元素的元组,需要在元素后添加逗号,否则视为整数
列表(list)
列表是包含零个或多个对象引用的有序数列
- 列表采用逗号和方括号([])表示,元素间用逗号分隔开
- 可通过list()函数将元组或字符串转化成列表
- 列表中元素的类型可以不相同,支持数字、字符串、列表(嵌套)等
- 列表必须通过显式赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象
列表类型特有的函数或方法(14个)
函数或方法 | 描述 |
---|---|
ls[i]=x | 替换列表ls第i个数据为x |
ls[i:j]=lt | 用列表lt替换列表ls中第i到第j(不含)项的数据 |
ls[i:j:k]=lt | 用列表lt替换列表ls中第i到第j(不含)项以k为步数的数据 |
del ls[i:j] | 删除列表ls中第i到第j(不含)项的数据,等价于ls[i:j]=[] |
del ls[i:j:k] | 删除列表ls中第i到第j(不含)项以k为步数的数据 |
ls+=lt或ls.extend(lt) | 将列表lt的元素增加到列表ls中 |
ls*=n | 更新ls列表,使其元素重复n次 |
ls.append(x) | 在列表ls最后增加一个元素x |
ls.clear() | 删除列表ls中的所有元素 |
ls.copy() | 生成一个新列表,复制ls中的所有元素 |
ls.insert(i,x) | 在列表ls的第i个位置增加元素x |
ls.pop(i) | 将列表ls中的元素取出并删除该元素 |
ls.remove(x) | 将列表ls中出现的第一个x元素删除 |
ls.reverse() | 将列表ls中的元素反转 |
列表生成式
- 要生成的元素x * x在最前面,后面跟for循环,for循环后面可以跟if判断
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
- 可以使用两层循环,可以生成全排列
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
集合类型
集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。
集合(set)
集合是一个无序不重复元素的序列。
- 集合的元素类型只能是不可变数据类型(能够进行哈希运算的类型都可以作为集合元素)
哈希运算可以将任意长度的二进制值映射为较短的固定长度的二进制值,哈希值是对数据的一种有损且紧凑的表示形式,是数据在另一个数据维度的体现。
- 集合是无序组合,没有索引和位置的概念,不能分片
- 集合不包含重复元素,可使用集合类型过滤重复元素
- 集合中元素可以动态增加或删除
- 集合用大括号({})表示(直接使用大括号生成一个空的字典而不是集合)
- 生成空集合需要使用函数set()
- 集合的基本功能是进行成员关系测试和过滤重复元素
集合类型的操作符(10个)
操作符 | 描述 |
---|---|
S-T | 差集:返回一个集合,包括在集合S中但不在集合T中的元素 |
s-=T | 更新集合S,包括在集合S中但不在集合T中的元素 |
S&T | 交集:返回一个新集合,包括同时在集合S和T中的元素 |
S&=T | 更新集合S,包括同时在集合S和T中的元素 |
S^T | 补集:返回一个新集合,包括集合S和T中的元素,但不包括同时在其中的元素 |
S=^T | 更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素 |
S|T | 并集:返回一个新集合,包括集合S和T中的所有元素 |
S=|T | 更新集合S,包括集合S和T中的所有元素 |
S<=T | 判断S是否是T的真子集 |
S>=T | 判断S是否是T的真超集 |
集合类型的操作函数或方法(10个)
操作函数或方法 | 描述 |
---|---|
S.add.(x) | 如果数据项x不在集合S中,将x增加到S |
S.clear() | 移除S中的所有数据项 |
S.copy | 返回集合S的一个副本 |
S.pop() | 随机返回集合S中的一个元素,若S为空,产生KeyError异常 |
S.discard(x) | 如果x在集合S中,则移除x;若不在也不报错 |
S.remove(x) | 如果x在集合S中,则移除x;否则产生KeyError异常 |
S.isdisjoint(T) | 如果集合S与T没有相同元素,则返回True |
len(S) | 返回集合S的元素个数 |
x in S | 如果x是S的元素,返回True,否则返回False |
x not in S | 如果x不是S的元素,返回True,否则返回False |
映射类型
映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)。
字典(dictionary)
字典是包含零个或多个键值对的集合,是一种映射类型,没有长度限制,可以根据减值索引内容
- 字典通过大括号({})建立,键和值通过冒号(:)连接,不同键值对通过逗号(,)隔开
- 键必须为不可变类型,且不能重复
- 值可以取任何数据类型,可以重复
- 字典是集合的延续,各个元素没有顺序之分
- 字典通过索引符号查找与特定键相对应的值
- 字典中对某个键值的修改可以通过中括号的访问和赋值实
字典类型的函数和方法
函数和方法 | 描述 |
---|---|
<d>.keys() | 返回所有的键信息 |
<d>.values() | 返回所有的值信息 |
<d>.items() | 返回所有的键值对 |
<d>.get(<key>,<defaulf>) | 键存在则返回相应值,否则返回默认值 |
<d>.pop(<key>,<defaulf>) | 键存在则返回相应值,同时删除键值对,否则返回默认值 |
<d>.popitem() | 随机从字典中取出一个键值对,以元组(key,value)形式返回 |
<d>.clear() | 删除所有的键值对 |
del<d>[<key>] | 删除字典中某一个键值对 |
<key>in<d> | 如果键在字典中则返回Ture,否则返回False |
运算符
算术运算符
运算符 | 描述 |
---|---|
+ | 加,两个对象相加 |
- | 减,得到负数或是一个数减去另一个数 |
* | 乘,两个数相乘或是返回一个被重复若干次的字符串 |
/ | 除,x除以y |
% | 取模,返回除法的余数 |
** | 幂,返回x的y次幂 |
// | 取整除,返回商的整数部分 |
比较运算符
运算符 | 描述 |
---|---|
== | 等于,比较对象是否相等 |
!= | 不等于, 比较两个对象是否不相等 |
> | 大于,返回x是否大于y |
< | 小于,返回x是否小于y。 |
>= | 大于等于,返回x是否大于等于y。 |
<= | 小于等于,返回x是否小于等于y。 |
- 所有比较运算符返回1表示真,返回0表示假,分别与特殊的变量True和False等价
赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符 |
+= | 加法赋值运算符 |
-= | 减法赋值运算符 |
*= | 乘法赋值运算符 |
/= | 除法赋值运算符 |
%= | 取模赋值运算符 |
**= | 幂赋值运算符 |
//= | 取整除赋值运算符 |
位运算符
- 按位运算符把数字看作二进制进行计算
运算符 | 描述 |
---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 |
逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 布尔"与" ,如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
or | x or y | 布尔"或" ,如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 |
not | not x | 布尔"非" ,如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 |
- 无论正负,非零为True
成员运算符
运算符 | 描述 |
---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
身份运算符
- 身份运算符用于比较两个对象的存储单元
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用自一个对象 |
is not | is not 是判断两个标识符是不是引用自不同对象 |
- id() 函数用于获取对象内存地址。
is 与 == 区别: - is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
运算符优先级
- ** :指数 ,最高优先级
- ~ + - :按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
- */ % // :乘,除,取模和取整除
- +- :加法减法
- >> << :右移,左移运算符
- & :位 'AND'
- ^ | :位运算符
- <= < > >= :比较运算符
- <> == != :等于运算符
- = %= /= //= -= += *= **= :赋值运算符
- is is not :身份运算符
- in not in :成员运算符
- nd or not :逻辑运算符
数据类型转换
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |