python基本数据类型
python基本数据类型
标准数据类型
Python3 中常见的数据类型有:
- Number(数字)
- String(字符串)
- bool(布尔类型)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
此外还有一些高级的数据类型,如: 字节数组类型(bytes)。
1. Number
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。
isinstance 和 type 的区别在于:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
1.1 整数类型
- 与数学中的整数含义相同,无取值范围;
- 整数包括二进制、八进制、十进制、十六进制等4种表示形式;
- 二进制:以0b或0B开头:0b1101,-0B10;
- 八进制:以0o或0O开头:0o456,-0O789;
- 十进制:123,-321,0;
- 十六进制:以0x或0X开头:0x1A,-0X2B。
- 如:0b1010 = 0o12 = 10 = 0xa
1.2 浮点数类型
- 与数学中的实数含义相同,带有小数及小数的数字,存在取值范围;
- 浮点数包括常规方法和科学计数法2种方式表示;
- 科学计数法使用字母e或E作为幂的符号,以10位基数,格式:e 表示 a*;
- 如:0.0043 = 4.3e-3 ; 98000000.0 = 9.8E7
- 不确定尾数问题:浮点数直接运算,可能产生不确定尾数。不确定尾数问题来源于浮点数在计算机中表示不精确的实际情况,广泛存在于编程语言中。可以使用round()辅助浮点数运算,消除不确定尾数。
1.3 复数类型
-
与数学中的复数概念相同,定义 j = ,复数表示为 a+bj;
-
z = a+bj,a是实部,b是虚部,a和b都是浮点数;
-
z.real获得z的实部,z.imag获得z的虚部。
1.4 bool类型
- 在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。
- Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True1、False0 会返回 True,但可以通过 is 来判断类型。
注意:
- 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
- 2、一个变量可以通过赋值指向不同类型的对象。
- 3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
- 4、在混合计算时,Python会把整型转换成为浮点数。
2. String
2.1 字符串类型
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 ** 转义特殊字符。
加号 + 是字符串的连接符, 星号 ***** 表示复制当前字符串,与之结合的数字为复制的次数。
#!/usr/bin/python3
str = 'Runoob' # 定义一个字符串变量
print(str) # 打印整个字符串
print(str[0:-1]) # 打印字符串第一个到倒数第二个字符(不包含倒数第一个字符)
print(str[0]) # 打印字符串的第一个字符
print(str[2:5]) # 打印字符串第三到第五个字符(包含第五个字符)
print(str[2:]) # 打印字符串从第三个字符开始到末尾
print(str * 2) # 打印字符串两次
print(str + "TEST") # 打印字符串和"TEST"拼接在一起
另外,反斜杠()可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。
注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。
>>> word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P
与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如 word[0] = 'm' 会导致错误。
注意:
- 1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 2、字符串可以用+运算符连接在一起,用*运算符重复。
- 3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- 4、Python中的字符串不能改变。
(1)字符串定义
- 字符串:由0个或多个字符组成的有序字符序列,由一对单引号(' ')或一对双引号(" ")表示,可对字符进行索引,用序号进行访问。
- 表示方法:由一对单引号或双引号表示,仅表示单行字符串;由一对三单引号或三双引号表示,可表示多行字符串。
(2)字符串的序号
(3)字符串的使用
-
使用[ ] 获取字符串中一个或多个字符。
-
字符串索引:s[N] 通过序号获取单个字符。
-
字符串切片:s[M:N] 获取M到N(不含)子串,使用[M: N :K]根据步长对字符串切片,使用[::-1]对字符串进行逆序。其中,M缺失表示至开头,N缺失表示至结尾。
(4)字符串处理函数
函数及使用 | 描述 |
---|---|
len(x) | 长度,返回字符串x的长度 |
str(x) | 任意类型x所对应的字符串形式 |
hex(x)或oct(x) | 整数x的十六进制或八进制小写形式字符串 |
chr(x) | x为Unicode编码,返回其对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
(5)字符串处理方法
方法及使用 | 描述 |
---|---|
str.lower()或str.upper() | 返回字符串的副本,全部字符小写/大写 |
str.split(sep=None) | 返回一个列表,由str根据sep被分割的部分组成 |
str.count(sub) | 返回子串sub在str中出现的次数 |
str.replace(old,new) | 返回字符串str的副本,所有old子串被替换为new |
str.center(width[,fillchar]) | 字符串str根据宽度width居中,fillchar可选 |
str.strip(chars) | 从str中去掉在其左侧和右侧chars中列出的字符 |
str.join(iter) | 在iter变量除最后元素外每个元素后增加一个str |
(6)常用格式字符符号
格式字符符号 | 说明 |
---|---|
%s | 格式化字符串 |
*%r | 字符串 (采用repr()的显示) |
%c | 单个字符 |
%d | 格式化十进制整数 |
%i | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数 |
%e | 指数 (基底写为e),用科学计数法格式化浮点数 |
%E | 指数 (基底写为E) |
%f、%F | 浮点数 |
%g | 指数(e)或浮点数 (根据显示长度) |
%G | 指数(E)或浮点数 (根据显示长度) |
%% | 一个字符% |
(7)字符串类型的格式化
格式化是字符串处理方法的一种,进行字符串格式的表达。
输入格式:<模板字符串>.format(<逗号分割的参数>)
代码实例:
a = 3.5
b = 2.8
c = a + b
print("{:.2f}".format(c)) # 保留两位小数
>>> 6.30
2.2 字节串类型(很少用到)
- 字节串是计算机存储空间的表达;
- 由0个或多个字节组成的有序序列,每字节对应值为0-255;
- 字节串由前导符b或B与一对单引号或双引号表示,如:b"a\xf6";
- 0-255间非可打印字符用\xNN方式表示,N是一个十六进制字符。
- 什么时候使用字节串?
- 字节串只有在处理跟内存相关的内容或者我们处理的内容和字节的数量密切相关的时候才用字节串。
3. bool
布尔类型即 True 或 False。
在 Python 中,True 和 False 都是关键字,表示布尔值。
布尔类型可以用来控制程序的流程,比如判断某个条件是否成立,或者在某个条件满足时执行某段代码。
布尔类型特点:
- 布尔类型只有两个值:True 和 False。
- bool 是 int 的子类,因此布尔值可以被看作整数来使用,其中 True 等价于 1。
- 布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0。
- 布尔类型可以和逻辑运算符一起使用,包括 and、or 和 not。这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。
- 布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,True 会被转换成 1,False 会被转换成 0。
- 可以使用
bool()
函数将其他类型的值转换为布尔值。以下值在转换为布尔值时为False
:None
、False
、零 (0
、0.0
、0j
)、空序列(如''
、()
、[]
)和空映射(如{}
)。其他所有值转换为布尔值时均为True
。
# 布尔类型的值和类型
a = True
b = False
print(type(a)) # <class 'bool'>
print(type(b)) # <class 'bool'>
# 布尔类型的整数表现
print(int(True)) # 1
print(int(False)) # 0
# 使用 bool() 函数进行转换
print(bool(0)) # False
print(bool(42)) # True
print(bool('')) # False
print(bool('Python')) # True
print(bool([])) # False
print(bool([1, 2, 3])) # True
# 布尔逻辑运算
print(True and False) # False
print(True or False) # True
print(not True) # False
# 布尔比较运算
print(5 > 3) # True
print(2 == 2) # True
print(7 < 4) # False
# 布尔值在控制流中的应用
if True:
print("This will always print")
if not False:
print("This will also always print")
x = 10
if x:
print("x is non-zero and thus True in a boolean context")
注意: 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性。
4. 组合
4.1 集合
(1)定义
-
集合:多个元素的无序组合,使用大括号
{}
表示,元素间用逗号,
分隔,建立非集合使用{}
或set()
函数。 -
基本功能:集合的两个基本功能分别是去重和成员测试。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
(2)特点
- 无序:元素间没有顺序,因此,要求元素不能相同,元素必须是不可变类型。
- 非一致性:元素类型可以不同。
- 无索引:不能对某个元素进行定点索引,可以遍历或随机获取元素。
(3)集合操作符
操作符 | 说明 |
---|---|
S *|* T | 并集 |
S *&* T | 交集 |
S *-* T | 差集 |
S *^* T | 补集 |
S *<=* T 或 S *<* T | 返回True或False,判断S和T的****子集关系 |
S *>=* T 或 S *>* T | 返回True或False,判断S和T的****包含关系 |
(4)集合处理方法
方法 | 说明 |
---|---|
S.add(x) | 如果x不在集合S中,将x加入S中 |
**S.discard(x) | 移除S中x元素,如果x不在S,不报错 |
S.remove(x) | 移除S中x元素,若x不在S中,产生keyError异常 |
S.clear() | 清除S中的所有元素 |
S.pop() | 随机返回S中的一个元素,更新S,所S为空,产生keyError异常 |
S.copy() | 返回集合S的一个副本 |
len(s) | 返回集合S中元素个数 |
x in S | 判断x是否在S中 |
x in not S | 判断x是否不在S中 |
set(x) | 将其他类型变量x转变为集合类型,也可以用于数据去重 |
(5)代码实例
a = {'丁一', '丁一', '王二', '张三', '李四', '赵五'}
print(set(a)) # 通过set()函数可以获得一个集合,集合一个主要特点,就是用来去重
>>> {'丁一', '王二', '赵五', '张三', '李四'}
4.2 元组(Tuple)
Python中的元组与列表类似,是序列类型的一种,不同之处在于元组的元素一旦创建不能修改。元组使用小括号()表示,元素间用逗号分隔,小括号可以省略。
(1)元组的定义
元组创建很简单,只需要在括号内添加元素,并使用逗号分开即可,具体代码如下:
tup1 = (36)
tup2 = (36,)
tup3 = ("hello")
tup4 = ("hello",)
print("tup1 = (50)的数据类型是:",type(tup1))
print("tup2 = (50,)的数据类型是:",type(tup2))
print("\ntup3 = (“hello”)的数据类型是:",type(tup3))
print("tup4 = (“hello”,)的数据类型是:",type(tup4))
如果你想创建只有一个元素的元组,需要注意在元素后面添加一个逗号,以区分它是一个元组而不是一个普通的值,这是因为在没有逗号的情况下,Python会将括号解释为数学运算中的括号,而不是元组的表示。
如果不添加逗号,如下所示,它将被解释为一个普通的值而不是元组:
not_a_tuple = (42)
这样的话,not_a_tuple
将是整数类型而不是元组类型。
string
、list
和 tuple
都属于 sequence
(序列)。
(2) 访问元组中的值
可以使用下标索引来访问元组中的值,也可以使用中括号的形式截取字符,还可以利用for循环语句来遍历元组中的值。具体代码如下:
tup1 = ("book", "desk", "bag", "chair", "dog", "cat", "panda", "sheep")
# 使用下标索引来访问元组中的值
print("元组中的第二个值,tup1[1]: ", tup1[1])
# 使用中括号的形式截取字符
print("元组中的第二和第五个值,tup1[1:5]: ", tup1[1:5])
# 利用for循环语句来遍历元组中的值
print("\n利用for循环语句来遍历元组中的值")
for i in tup1:
print(i)
(3)元组的连接
元组中的元素是不允许修改的,但可以利用“+”号对元组进行连接组合。具体代码如下:
tup1 = ("张三","王芳","李四")
tup2 = ('男', '女',"男")
tup3 = (96, 89, 97)
tup4 = tup1 + tup2 + tup3 # 创建一个新的元组
print("连接元组:", tup4)
(4)元组的删除
元组中的元组是不允许删除的,但我们可以使用del语句来删除整个元组。具体代码如下:
tup = ("张三", "王芳", "李四")
print(tup)
del tup
print("删除后的元组 tup : ")
print(tup)
(5)元组的函数
元组的函数名 | 含义 |
---|---|
len(tuple) | 返回元组元素个数 |
max(tuple) | ****返回元组元素的最大值 |
min(tuple) | 返回元组元素的最小值 |
tuple(seq) | 将列表转换为元组 |
tuple1 = (5, 4, 8, 12, 16, 38, 999, 1562)
tuple2 = ("who", "what", "whose", "when")
print("元组中元素的最大值:", max(tuple1))
print("元组中元素的最小值:", min(tuple1))
print("元组中元素的最大值:", max(tuple2))
print("元组中元素的最小值:", min(tuple2))
print("\n元组中元素的个数:", len(tuple1))
print("\n元组中元素的个数:", len(tuple2))
print("\n把元组转换成列表,并显示:", list(tuple1))
print("把列表为元组,并显示:", tuple(list(tuple1)))
注意:
- 1、与字符串一样,元组的元素不能修改。
- 2、元组也可以被索引和切片,方法一样。
- 3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
- 4、元组也可以使用 + 操作符进行拼接。
4.3 列表(List)
(1)列表的定义
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
-
序列类型的一种,元素间的有序组合,类型不限,创建后可以随时被修改。
-
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
-
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
-
列表可以将多个数据有序地组织在一起,更方便调用。
-
如:ls = ["cat", "tiger", 1024]。
列表截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 + 是列表连接运算符,星号 ***** 是重复操作。如下实例:
#!/usr/bin/python3
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ] # 定义一个列表
tinylist = [123, 'runoob']
print (list) # 打印整个列表
print (list[0]) # 打印列表的第一个元素
print (list[1:3]) # 打印列表第二到第四个元素(不包含第四个元素)
print (list[2:]) # 打印列表从第三个元素开始到末尾
print (tinylist * 2) # 打印tinylist列表两次
print (list + tinylist) # 打印两个列表拼接在一起的结果
# 输出结果
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
注意:
- 1、列表写在方括号之间,元素用逗号隔开。
- 2、和字符串一样,列表可以被索引和切片。
- 3、列表可以使用 + 操作符进行拼接。
- 4、列表中的元素是可以改变的。
(2)常用函数
函数名 | 含义 |
---|---|
len(list) | 返回列表元素个数 |
max(list) | 返回列表元素的最大值 |
minlist) | 返回列表元素的最小值 |
list(seq) | 将元组转换为列表 |
id(list) | 获取列表对象的内存地址 |
(3)常用方法
常用方法 | 含义 |
---|---|
list.append('baidu') | 追加"baidu"元素 |
list.insert(1,'baidu') | 在列表第一个位置插入“baidu”元素 |
list.index(x) | 返回列表中第一个值为x的元素的索引 |
list.remove(v) | 从列表中移除第一次找到的值v |
list.pop([i]) | 从列表中指定位置删除元素。并将其返回。 |
list.reverse() | 倒排列表中的元素 |
list.count(X) | 计数,返回x在列表中出现的次数 |
list.sort(key = None, reverse = False) | 对列表中的元素进行适当排序, reverse = True为降序, reverse = False为升序(默认) |
del list[2] | 删除列表第三个元素 |
del list | 删除列表 |
(4)代码实例
- 创建列表
class1 = ['丁一', '王二', '张三', '李四', '赵五']
print(class1)
>>> ['丁一', '王二', '张三', '李四', '赵五']
# 列表的元素类型不限
list1 = [1, '123', [1, 2, 3]]
print(list1)
>>> [1, '123', [1, 2, 3]]
- 遍历列表
class1 = ['丁一', '王二', '张三', '李四', '赵五']
for i in class1: # 使用for循环遍历列表
print(i)
- 列表元素计数
# 统计列表的元素个数的函数:len函数
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = len(class1)
print(a)
>>> 5
- 列表元素调用
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = class1[1] # 调取列表中第二个元素“王二”
print(a)
>>> 王二
- 列表切片
# 选取多个列表元素的方法:列表切片
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = class1[1:4] # 选取列表中第二个和第四个元素,列表切片左闭右开
print(a)
>>> ['王二', '张三', '李四']
b = class1[1:] # 选取从第二个元素到最后
c = class1[-3:] # 选取从列表倒数第三个元素到最后
d = class1[:-2] # 选取倒数第二个元素前的所有元素(因为左闭右开,所以不包含倒数第二个元素)
print(b)
>>> ['王二', '张三', '李四', '赵五']
print(c)
>>> ['张三', '李四', '赵五']
print(d)
>>> ['丁一', '王二', '张三']
- 增加列表元素
# 列表增加元素的办法:append方法
score = []
score.append(80)
print(score)
>>> [80]
score = []
score.append(80)
score.append(90)
score.append(70)
print(score)
>>> [80, 90, 70]
- 列表转换成字符串
# 列表转换成字符串,这个先了解下即可,很远之后才用的上
class1 = ['丁一', '王二', '张三', '李四', '赵五']
a = ",".join(class1)
print(a)
>>> 丁一,王二,张三,李四,赵五
(5)代码实例:数字排序
list1 = [] # 定义一个空列表
for i in range(8): # 利用for循环向列表中添加数据
mynum = int(input("请输入要排序的数字(一共8个数字):"))
list1.append(mynum)
list1.sort() # 默认为升序
print("\n从小到大排序数字:", list1)
list1.sort(reverse=True) # 设置排序为降序
print("\n从大到小排序数字:", list1)
print("\n数字中的最大值:", max(list1))
print("数字中的最小值:", min(list1))
4.4 字典类型
(1) 介绍
- 字典是另一种存储数据的格式。字典的每个元素都由两部分组成(列表的每个元素只有一个部分),前一部分称为键,后一部分称为值,中间用冒号相连。
- 字典类型是键值对的集合,反映了数据之间的映射关系
- 字典使用大括号{}表示,键值间用冒号分隔,键值对间用逗号分隔
- 映射是一种键(索引)和值(数据)的对应;
语法格式
字典名 = {<键1>:<值1>, <键2>:<值2>, ..., <键n>:<值n>}
d = {"中国": "北京", "美国": "华盛顿", "法国": "巴黎"}
(2)通过键检索值
#!/usr/bin/python3
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
(3) 常用方法
常用方法 | 含义 |
---|---|
d.keys() | 返回一个列表,列表包含字典的所有键的信息 |
d.values() | 返回一个列表,列表包含字典的所有值的信息 |
d.items() | 返回一个列表,列表元素为字典的键和值构成的元组 |
d.len(d) | 返回字典的长度,即字典元素的数目 |
d.str(d) | 输出字典可打印的字符串 |
d.copy() | 复制一个字典 |
d.zip() | 合并列表组成字典 |
d.update() | 将一个字典的元素添加到另一个字典中 |
d.clear() | 删除字典中全部的键值对,使之变为空字典 |
del d[k] | 删除字典d中键k对应的值 |
k in d | 判断键k是否在字典d中 |
len(d) | 返回字典的个数 |
(4)代码实例
构造函数 dict() 可以直接从键值对序列中构建字典如下:
>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Runoob': 1, 'Google': 2, 'Taobao': 3}
{x: x**2 for x in (2, 4, 6)} 该代码使用的是字典推导式,更多推导式内容可以参考:Python 推导式。
另外,字典类型也有一些内置的函数,例如 clear()、keys()、values() 等。
注意:
- 1、字典是一种映射类型,它的元素是键值对。
- 2、字典的关键字必须为不可变类型,且不能重复。
- 3、创建空字典使用 { }。
(5) 遍历字典
- 字典名["键名"]提取值
# 字典名["键名"]提取值
class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55}
score = class1['王二']
print('score:',score)
>>> score: 95
-
遍历字典内容
- 方法一:
# 遍历字典内容1 class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55} for i in class1: # 这个i代表的是字典中的键,也就是丁一、王二麻子等 print('class1:',i,class1[-i])
- 方法二:
# 遍历字典内容2 class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55} for i in class1: # 这个i代表的是字典中的键,也就是丁一、王二麻子等 print(i + ':' + str(class1[i])) # 注意要str把85等数字转换成字符串,才能进行字符串拼接
- 方法三:
# 遍历字典内容3 class1 = {'丁一': 85, '王二': 95, '张三': 75, '李四': 65, '赵五': 55} a = class1.items() print(a)
-
删除字典键值对
del class1['丁一'] # 删除字典键值对
print(class1)
5. bytes
在 Python3 中,bytes 类型表示的是不可变的二进制序列(byte sequence)。
与字符串类型不同的是,bytes 类型中的元素是整数值(0 到 255 之间的整数),而不是 Unicode 字符。
bytes 类型通常用于处理二进制数据,比如图像文件、音频文件、视频文件等等。在网络编程中,也经常使用 bytes 类型来传输二进制数据。
创建 bytes 对象的方式有多种,最常见的方式是使用 b 前缀:
此外,也可以使用 bytes() 函数将其他类型的对象转换为 bytes 类型。bytes() 函数的第一个参数是要转换的对象,第二个参数是编码方式,如果省略第二个参数,则默认使用 UTF-8 编码:
x = bytes("hello", encoding="utf-8")
与字符串类型类似,bytes 类型也支持许多操作和方法,如切片、拼接、查找、替换等等。同时,由于 bytes 类型是不可变的,因此在进行修改操作时需要创建一个新的 bytes 对象。例如:
x = b"hello"
y = x[1:3] # 切片操作,得到 b"el"
z = x + b"world" # 拼接操作,得到 b"helloworld"
需要注意的是,bytes 类型中的元素是整数值,因此在进行比较操作时需要使用相应的整数值。例如:
x = b"hello"
if x[0] == ord("h"):
print("The first element is 'h'")
6. Python数据类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
函数 | 描述 |
---|---|
[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) | 将一个整数转换为一个八进制字符串 |