2. Python 数据类型

2018-06-25  本文已影响0人  柄志

数据类型


基本数据类型

数字(Number)

整型(int)

进制种类 引导符号 描述
十进制 默认情况
二进制 0b或0B 由字符0和1组成
八进制 0o或0O 由字符0到7组成
十六进制 0x或0X 由字符0到9、a到f、A到F组成

浮点型(float)

科学计数法使用字母e或E作为幂的符号,以10为基数,含义如下:

<a>e<b>=a*10b^2

使用整数表达浮点数的方法是高精确度运算的基本方法之一。

布尔型(bool)

复数(complex)

复数可以看作是二元有序实数对(a,b),表示为a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。

1.23e-4+5.67e+89j
(1.23e-4+5.67e+89j).real
(1.23e-4+5.67e+89j).imag

字符串(String)

变量[头下标:尾下标]

转义字符

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

字符串运算符

操作符 描述
+ 字符串连接
* 重复输出字符串
[] 通过索引获取字符串中字符
[ : ] 截取字符串中的一部分
in 成员运算符:如果字符串中包含给定的字符返回 True
not in 成员运算符:如果字符串中不包含给定的字符返回 True
r/R 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。
% 格式字符串

字符串格式化

字符串格式化用于解决字符串和变量同时输出时的格式安排

format()方法的基本使用

"圆周率{{{1}{2}}}是{0}".format("无理数",3.1415926,"……")

format()方法的格式控制

: <填充> <对齐> <宽度> <,> <.精度> <类型>
引导符号 用于填充的单个字符 <左对齐、>右对齐、^居中对齐 槽的设定输出宽度 数字的千位分隔符 适用于整数和浮点数 浮点数小数部分的精度或字符串的最大输出长度 整数类型b,c,d,o,x,X;浮点数类型e,E,f,%

对于整数类型

  1. b:整数的二进制;
  2. c:整数对应的Unicode字符;
  3. d:整数的十进制;
  4. o:整数的八进制
  5. x:整数的小写十六进制
  6. X:整数的大写十六进制

对于浮点数类型

  1. e:浮点数对应的小写字母e的指数形式
  2. E:浮点数对应的大写字母E的指数形式
  3. f:浮点数的标准浮点形式
  4. %:浮点数的百分形式

字符串格式化的另一种方法

与 C 中 sprintf 函数一样的语法

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个)

方法 描述
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'
>>> tup1 = () #空元组
>>> tup2 = (1,) #1个元素的元组,需要在元素后添加逗号,否则视为整数

列表(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 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)

集合是一个无序不重复元素的序列。

哈希运算可以将任意长度的二进制值映射为较短的固定长度的二进制值,哈希值是对数据的一种有损且紧凑的表示形式,是数据在另一个数据维度的体现。

集合类型的操作符(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,则该位的结果为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。

成员运算符

运算符 描述
in 如果在指定的序列中找到值返回 True,否则返回 False。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。

身份运算符

运算符 描述
is is 是判断两个标识符是不是引用自一个对象
is not is not 是判断两个标识符是不是引用自不同对象

运算符优先级

  1. ** :指数 ,最高优先级
  2. ~ + - :按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
  3. */ % // :乘,除,取模和取整除
  4. +- :加法减法
  5. >> << :右移,左移运算符
  6. & :位 'AND'
  7. ^ | :位运算符
  8. <= < > >= :比较运算符
  9. <> == != :等于运算符
  10. = %= /= //= -= += *= **= :赋值运算符
  11. is is not :身份运算符
  12. in not in :成员运算符
  13. 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) 将一个整数转换为一个八进制字符串
上一篇下一篇

猜你喜欢

热点阅读