【1.0】Python中级之数据类型的内置方法
【一】数据类型内置方法介绍
- 数据类型是用来记录事物状态的,而事物的状态是不断变化的(如:一个人年龄的增长(操作int类型)
- 单个人名的修改(操作str类型),学生列表中增加学生(操作list类型)等),这意味着我们在开发程序时需要频繁对数据进行操作
- 为了提升我们的开发效率
- python针对这些常用的操作,为每一种数据类型内置了一系列方法。
【二】数字类型
【1】整数类型(int)
(1)整数类型定义
- 整数类型是Python中的一种基本数据类型,用于表示整数。
- 在Python中,整数类型是不可变的,即一旦创建,其值不能被修改。
(2)定义
- 整数类型可以直接使用数字进行定义
(3)内置方法
int.bit_length()
- 返回整数的二进制表示中最高位的位数,不包括符号和前导零。
int.to_bytes(length, byteorder, signed)
- 将整数转换为字节数组。
- 参数
length
指定生成的字节数组的长度,byteorder
指定字节顺序,signed
指定是否考虑整数的符号。
int.from_bytes(bytes, byteorder, signed)
- 将字节数组转换为整数。
- 参数
bytes
是输入的字节数组,byteorder
指定字节顺序,signed
指定是否考虑整数的符号。
int.__add__(other)
- 实现整数的加法运算。
int.__sub__(other)
- 实现整数的减法运算。
int.__mul__(other)
- 实现整数的乘法运算。
int.__truediv__(other)
- 实现整数的真除法运算。
int.__floordiv__(other)
- 实现整数的整除法运算。
int.__mod__(other)
- 实现整数的取模运算。
int.__pow__(other, modulo=None)
- 实现整数的幂运算。
(4)类型强转
- 可以将由纯整数构成的字符串直接转换成整型
- 若包含其他任意非整数符号
- 则会报错
(5)进制转换
- 在Python中,整数类型提供了一些方法来进行进制转换,主要涉及到二进制、八进制、十六进制。
[1]十进制转二进制:bin()
- 将整数转换为二进制表示,返回一个字符串。
[2]十进制转八进制:oct()
- 将整数转换为八进制表示,返回一个字符串。
[3]十进制转十六进制:hex()
- 将整数转换为十六进制表示,返回一个字符串。
[4]其它进制转十进制:int()
-
int()
函数支持将不同进制的字符串转换为十进制整数。主要的进制包括:-
二进制(以 '0b' 或 '0B' 开头)
-
八进制(以 '0o' 或 '0O' 开头)
-
十六进制(以 '0x' 或 '0X' 开头)
-
-
你可以根据需要选择不同的进制进行转换。
- 在这些例子中,字符串的前缀表明了不同的进制
【2】浮点类型(float)
(1)浮点类型定义
- 浮点类型是一种表示有小数部分的数字的数据类型。
- 在Python中,可以使用小数点表示浮点数。
(2)定义
(3)内置方法
- 浮点类型的内置方法包括各种数学运算,例如加法、减法、乘法和除法。
- 此外,还有一些与浮点数相关的函数,如取整函数
round()
。
- 这些方法和运算符都可用于浮点数的处理。值得注意的是,由于计算机存储浮点数的方式,可能存在一些精度问题。
(4)类型强转
- 类型强转,即将一个数据类型转换为另一个数据类型
- 。在Python中,可以使用内置函数来进行类型强转。
- 在上述例子中,
float()
函数将整数转换为浮点数,而int()
函数将浮点数转换为整数。 - 类型强转在处理不同类型的数据时非常常见,确保数据在执行某些操作时具有相同的类型,以避免出现错误。
【3】判断数字类型
(1)数字类型说明
(2)判断数字类型(isdigit)
(3)判断小数类型(isdecimal)
(4)判断数字类型(isnumeric)
(5)无法判断浮点数
【三】字符串类型(str)
【1】字符串类型定义
- 字符串是由字符组成的,可以包含字母、数字、标点符号、空格等字符。
- 在Python中,字符串类型使用单引号或双引号来定义。
- 字符串还可以使用三引号(单引号或双引号)定义多行字符串
【2】定义
【3】内置方法(优先)
(0)字符串拼接
- 字符串拼接是将多个字符串连接在一起形成一个新的字符串。
- 可以使用
+
运算符来实现字符串拼接。
(1)索引取值
[1]正索引取值
- 字符串中的每个字符都有一个索引,正索引从左到右依次增加
[2]反索引取值
- 反索引从右到左依次增加,最右边的字符索引为 -1。
[3]只能取值,不能修改
(2)切片(顾头不顾尾)
[1]切片顾头不顾尾
- 切片用于获取字符串的一部分,可以指定起始索引和结束索引
[2]步长
[3]反向切片
(3)计算长度(len)
len()
函数用于计算字符串的长度。
(4)成员运算
in
和not in
用于检查一个字符串是否包含另一个字符串
[1]in
[2]not in
(5)去除空格(strip)
strip()
方法用于去除字符串首尾的空格。
[1] 默认 strip
- 默认情况下,
strip()
方法会去除字符串开头和结尾的所有空格。
[2] 左去除 lstrip
lstrip()
方法用于去除字符串开头的空格。
[3] 右去除 rstrip
rstrip()
方法用于去除字符串结尾的空格。
[4] 去除指定字符
- 如果需要去除字符串开头和结尾的指定字符,可以传入一个字符串参数给
strip()
方法。
- 这些方法在处理用户输入、文件读取等场景中经常用到,可以有效地清理字符串的格式
(6)切分(split)
split()
方法用于将字符串切分成多个子字符串,并返回一个包含切分后子字符串的列表。
[1] 默认切分符
- 如果不指定切分符,则默认使用空格作为切分符。
[2] 指定分隔符
- 可以通过传递一个分隔符参数给
split()
方法来指定切分符。
- 在处理 CSV 格式的数据、日志文件等场景中,
split()
方法非常实用,可以将字符串按照指定的分隔符拆分成各个字段。
(7)遍历字符串
- 使用
for
循环可以遍历字符串中的每个字符
(8)字符串重复
- 使用
*
运算符可以实现字符串的重复
(9)大小写转换
[1]小写转大写(upper())
- 将给定字符串中的所有字母变为大写
[2]大写转小写(lower())
- 将给定字符串中的所有字母变为小写
(10)首尾字符判断
[1]判断字符开头(startswith())
- startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False
[2]判断字符结尾(endswith())
- endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False
(11)格式化输出
- 之前讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出。
[1] % 输出
- 使用
%
运算符进行格式化输出,可以在字符串中插入占位符,然后通过%
运算符传入相应的值。
- 在上例中,
%s
和%d
是占位符,分别表示字符串和整数,而(name, age)
是传入这两个占位符的实际值。 - 占位符类型
%s
:字符串%d
:整数%f
:浮点数%x
:十六进制整数
[2] formate 输出
- 使用
format
方法进行格式化输出,通过花括号{}
表示占位符,然后调用format
方法传入实际值
- 在这个例子中,
{}
是占位符,它会按顺序依次填充传入format
方法的值
[3] f + {} 输出
- 使用 f-string(f +
{}
)进行格式化输出,通过在字符串前加上f
或F
前缀,然后在字符串中使用{}
表示占位符,并在{}
中直接引用变量。
(12)拼接join
- 从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
(13)替换replace
- 用新的字符替换字符串中旧的字符
(14)判断类型isdigit
- 判断字符串是否是纯数字组成,返回结果为True或False
【4】内置方法(熟悉)
(1)查找
[1]find
- 从指定范围内查找子字符串的起始索引,从左向右查找,找得到则返回元素所在的索引位置,找不到则返回-1
[2]rfind
- 从指定范围内查找子字符串的起始索引,从右向左查找,找得到则返回元素所在的索引位置,找不到则返回-1
[3]index
- index:同find,但在找不到时会报错
[4]rindex
- index:同rfind,但在找不到时会报错
[5]count
- 统计指定字符在大字符串中出现的次数
(2)填充
[1]center
- 用指定字符填充指定字符串
- 字符串长度要基于给指定字符长度的基础上增加
- 如果两侧不平衡,则右多左少
[2]ljust
- 字符串长度要基于给指定字符长度的基础上增加
- 左对齐,指定字符填充在原有字符串的右侧
[3]rjust
- 字符串长度要基于给指定字符长度的基础上增加
- 左对齐,指定字符填充在原有字符串的左侧
[4]zfill
- 字符串长度要基于给指定字符长度的基础上增加
- 用 0 填充,填充在字符串左侧
(3)制表符
- expandtabs
(4)首字母大写(captalize)
- 只会将这一行的第一个单词的首字母大写,其他单词不变
(5)大小写翻转(swapcase)
- 大写变小写,小写变大写,进行颠倒
(6)单词首字母大写(title)
- 将给定句子的每一个单词的首字母大写
- 要符合英文句子的语法规范,每个单词之间要有空格
【5】判断字符串类型
【四】列表类型(list)
【1】列表类型定义
- 列表是Python中最常用的数据类型之一,用于存储一组有序的元素
【2】定义
- 列表可以包含多个元素,每个元素之间用逗号
,
隔开,并用方括号[]
括起来。
【3】内置方法(优先)
(1)类型强转
- 但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型
- list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
(2)按索引存取值
- 即可存也可以取
[1]正向取值
[2]反向取值
[3]索引取值无则报错
- 对于list来说,既可以按照索引取值,又可以按照索引修改指定位置的值,但如果索引不存在则报错
(3)切片
[1]顾头不顾尾
[2]步长
(4)计算长度
(5)成员运算
[1]in
[2]not in
(6)增加
[1]默认追加(append())
- append()默认追加到末尾(不管是什么类型的数据,都会当成一个整体元素填进去)
[2]一次性添加多个(extend())
- extend()一次性在列表尾部添加多个元素、合并列表
[3]指定位置添加(insert)
- insert()在指定位置添加元素(索引位置,不管是什么类型的数据,都会当成一个整体元素填进去)
(7)删除
[1]del
- 删除指定索引的元素
[2]pop
- pop()默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素
[3]remove
- remove()括号内指名道姓表示要删除哪个元素,没有返回值
- 在这个例子中,
remove(3)
删除了列表中的第一个值为 3 的元素。 - 如果值不存在,会引发
ValueError
异常。 - 这是与
pop()
不同的地方,pop()
是通过索引来删除元素的
(8)颠倒元素(reverse())
- 在这个例子中,
reverse()
将列表中的元素颠倒,原来的第一个元素变成了最后一个,原来的最后一个元素变成了第一个
(9)元素排序(sort())
sort()
方法用于对列表进行排序,默认是升序排序。
- 如果需要降序排序,可以使用
reverse
参数:
- 需要注意的是,
sort()
方法会直接修改原列表,而不会返回一个新的排序后的列表。
(10)元素排序(sorted())
- 如果你需要保留原列表,可以使用
sorted()
函数
sort()
方法默认是按照元素的大小进行排序,如果需要自定义排序规则,可以使用key
参数,传入一个函数- 。例如,按照元素的绝对值进行排序:
key
参数指定的函数将应用于列表中的每个元素,用于提取排序的关键字。
(10)遍历循环
- 遍历循环是对列表中的每个元素进行迭代或循环处理。常用的遍历方式有
for
循环和while
循环。
[1]for
循环遍历列表
[2]while
循环遍历列表
for
循环更加简洁,但while
循环提供了更多的控制选项。- 通常情况下,推荐使用
for
循环遍历列表。
[3]遍历时获取索引
- 在遍历循环中,有时需要获取元素的索引值。
- 可以使用
enumerate()
函数实现:
[4]遍历时获取索引和值
- 如果需要同时获取元素的索引和值,可以使用
enumerate()
函数:
- 这样就可以在循环中同时获取元素的索引和值。
(11)步长操作
[1]正向步长
- 正向步长是从列表的开头向末尾按指定步长取元素:
[2]反向步长
- 反向步长是从列表的末尾向开头按指定步长取元素:
[3]列表翻转
- 列表翻转是指将列表中的元素顺序颠倒过来:
- 这些步长操作可以在遍历列表时提供更灵活的选项,根据需求选择不同的步长值以获取所需的元素。
(补充)字符串排序
- 我们常用的数字类型直接比较大小,但其实,字符串、列表等都可以比较大小
- 原理相同:都是依次比较对应位置的元素的大小,如果分出大小,则无需比较下一个元素
-
当我们使用
sort()
方法对列表进行排序时,Python会按照以下原理进行比较和排序:-
Python使用的是一种稳定的排序算法,通常是Timsort(合并排序和插入排序的混合算法)。
-
对于字符串,比较的是字符的ASCII码值。在ASCII码表中,大写字母在小写字母之前,因此大写字母会排在小写字母的前面。在你提供的例子中,'A'的ASCII码小于'adjk'中的任何字符,而'z'的ASCII码大于其他所有字符。
-
对于字符串列表,Python按照元素的字典顺序进行比较。首先比较第一个元素,如果相等则继续比较下一个元素,以此类推。
-
-
在上述例子中,列表
['A', 'z', 'adjk', 'hello', 'hea']
会按照以下步骤排序:-
'A'
和'adjk'
比较,由于'A'
的ASCII码小,所以'A'
排在前面。 -
'adjk'
和'hea'
比较,由于'adjk'
的ASCII码小,所以'adjk'
排在前面。 -
'hea'
和'hello'
比较,由于'hea'
的ASCII码小,所以'hea'
排在前面。 -
'hello'
和'z'
比较,由于'hello'
的ASCII码小,所以'hello'
排在前面。 -
最后是
'z'
,它是最大的,所以'z'
排在最后。
-
-
最终,排序后的列表为
['A', 'adjk', 'hea', 'hello', 'z']
。
【五】元组类型(tuple)
【1】元组类型定义
- 元组(Tuple)是Python中的一种有序、不可变的数据类型。
- 元组使用小括号()来定义,可以包含任意类型的元素,包括数字、字符串、列表等。
【2】定义
- 在Python中,可以使用逗号
,
来创建元组,通常也建议使用小括号,尽管小括号并不是必须的。例如:
【3】内置方法
(1)类型强转
- 但凡能被for循环的遍历的数据类型都可以传给tuple()转换成元组类型
- 使用
tuple()
函数可以将其他可迭代对象转换为元组
(2)索引取值
- 与列表类似,元组也支持按索引存取值
[1]正索引取值
[2]负索引取值
[3]只能取不能改
- 与列表相同,如果索引不存在,会抛出
IndexError
(3)切片(顾头不顾尾)
- 与列表一样,元组也支持切片操作
[1]顾头不顾尾
[2]步长
(4)计算长度
- 使用
len()
函数可以获取元组的长度
(5)成员运算
- 与列表相同,元组也支持
in
和not in
运算符
[1]in
[2]not in
(6)遍历循环
- 使用
for
循环可以遍历元组中的每个元素
(7)元组拼接
- 使用
+
运算符可以将两个元组拼接成一个新的元组
(8)元组重复
- 使用
*
运算符可以将元组重复指定次数
【六】布尔类型(bool)
【1】强制类型转换
【2】真
- 布尔值为 True:
True
本身表示真。 - 非零数字: 除了零之外的任何整数或浮点数都被视为真。
- 非空字符串: 非空字符串被视为真。
- 非空列表、非空字典、非空集合等: 如果容器类型中包含元素,被视为真。
【3】假
-
布尔值为 False: 显而易见,
False
本身就表示假。 -
数字零: 数字类型中,整数或浮点数中的零被视为假。
-
空字符串: 空字符串
''
被视为假。 -
空列表、空字典、空集合等: 对于容器类型,如果它们为空,被视为假。
【七】字典类型(dict)
【1】字典类型定义
-
字典(Dictionary)是一种无序的数据集合,使用键(key)和值(value)之间的映射关系来存储数据。
-
字典是Python中唯一的映射类型,其它语言中可能称为关联数组或哈希表。
-
字典的特点:
-
字典中的数据是无序的,不能通过索引来访问,而是通过键来访问。
-
字典中的键必须是不可变的,通常使用字符串、数字或元组作为键。
-
字典中的值可以是任意类型,包括数字、字符串、列表、字典等。
-
-
字典的创建使用花括号
{}
,并使用冒号:
分隔键和值。 -
多个键值对之间使用逗号
,
分隔。
【2】定义
- 定义字典时,键和值之间使用冒号
:
分隔,多个键值对之间使用逗号,
分隔。 - 字典的键必须是不可变的,通常使用字符串、数字或元组作为键。
- 在定义字典时,也可以使用
dict
函数
【3】内置方法
(1)取值
[1]按[key]取值
- 使用中括号加键名的方式可以直接获取字典中对应键的值
[2]get取值
- 使用
get
方法可以根据键获取对应的值,如果键不存在,则返回指定的默认值(默认为None
)
(2)计算长度
- 使用
len
函数可以计算字典中键值对的个数
(3)成员运算
- 使用
in
和not in
可以判断一个键是否存在于字典中
(4)增加
[1]新增键值对
- 使用
update
方法可以批量新增键值对,如果键已经存在,则更新对应的值
[2]批量新增键值对(update())
- 使用
update
方法可以批量新增键值对,如果键已经存在,则更新对应的值
[3]增加值并返回值(setdefault())
setdefault(key, default)
方法用于获取指定键的值,如果键不存在,则返回默认值,并在字典中添加键值对。
- 如果字典中存在键
'gender'
,则setdefault()
方法返回对应的值; - 如果不存在,则添加新键值对
'gender': 'male'
并返回默认值'male'
(5)删除
[1]按键删除(del())
- 使用
del
关键字可以根据键删除字典中的键值对
[2]弹出键值对(pop())
- 使用
pop
方法可以根据键弹出字典中的键值对,同时返回被弹出的值
[3]清空字典(clear())
- 使用
clear
方法可以清空字典中的所有键值对
[4]随机删除键值对(popitem())
popitem()
方法用于随机删除字典中的一个键值对,并以元组的形式返回被删除的键值对。- 字典是无序的,所以删除的是一个随机的键值对。
popitem()
在 Python 3.7+ 中删除的是字典中的“末尾”键值对,但在旧版本的 Python 中,删除的并不是末尾的键值对。- 所以在使用
popitem()
时要注意版本兼容性。
(6)键对(keys())
- 使用
keys
方法可以获取字典中所有的键,返回一个可迭代的视图对象
(7)值对(values())
- 使用
values
方法可以获取字典中所有的值,返回一个可迭代的视图对象
(8)键值对(items())
- 使用
items
方法可以获取字典中所有的键值对,返回一个可迭代的视图对象
(9)遍历循环
[1]只遍历key
[2]只遍历value
[3]遍历key和value
(10)字典排序(sorted())
- 字典的排序是通过字典的键来进行的,使用
sorted()
函数可以对字典进行排序。
- 在示例中,
sorted()
函数对字典my_dict
的键进行了排序,返回了一个按键排序的元组列表。 - 如果需要按值进行排序,可以使用
key
参数指定排序的关键字:
- 在这个示例中,
key
参数指定了按值排序,并使用了lambda
函数提取元组中的第二个元素(值)作为排序的关键字。
【八】集合类型(set)
【1】集合类型定义
- 集合(Set)是 Python 中的一种无序且不重复的数据类型。
- 集合类型的定义使用大括号
{}
,元素之间使用逗号,
分隔。
【2】定义
- 集合的定义方式与示例中的方式相同,使用大括号
{}
并将元素用逗号,
分隔。
- 无序性
- 去重性
【3】内置方法
(0)类型强转
- 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型
- 在这个示例中,
my_list
是一个包含重复元素的列表,通过使用set()
将其转换为集合,得到了一个去重后的集合my_set
。
(1)添加元素
[1] 添加单个元素(add())
add(element)
方法用于向集合中添加单个元素。
[2]添加多个元素(update())
update(iterable)
方法用于向集合中添加多个元素,参数是一个可迭代对象。
(2)删除元素
[1] 删除指定元素(remove())
remove(element)
方法用于移除集合中的指定元素,如果元素不存在则会引发 KeyError。
[2] 删除指定元素(discard())
discard(element)
方法用于移除集合中的指定元素,如果元素不存在则不会引发错误。
[3] 随机删除元素(pop())
-
pop() 是基于HashMap实现的,它总是「删除」集合中的「第一个元素」,由于集合是「无序」的,所以它看起来就像是「随机」删除元素。
-
pop()
方法用于随机移除集合中的一个元素,如果集合为空则引发 KeyError。
- 当集合中的元素是「纯数字」时,集合会按照从小到大的顺序排列元素,「最小」的数值会别排在第一个,所以pop()时,会删除最小的那个元素。
- 当集合中的元素是「纯字符串」时,集合无法保证元素的排序,由于 pop() 总是删除第一个元素,所以这种情况看起来就是随机删除。
- 当集合中的元素有字符串、整形、元组等「混合」组合时,元素的排序会变得随机,当然, pop() 仍然会固执地删除第一个元素。
- 使用 pop() 的集合,必须有元素,「空集合」会报错 KeyError。
- 实际上,这并不是集合,而是字典
(3)集合操作
[1] 并集(union())
union(*others)
方法返回当前集合与其他集合的并集。
[2] 交集(intersection())
intersection(*others)
方法返回当前集合与其他集合的交集。
[3] 差集(difference())
difference(*others)
方法返回当前集合与其他集合的差集。
[4] 对称差集(symmetric_difference())
symmetric_difference(other)
方法返回当前集合与其他集合的对称差集。
[5]父集
[6]子集
[7]判断(==
)
(4)去重
-
只能针对不可变类型
-
集合本身是无序的,去重之后无法保留原来的顺序
(5)计算长度(len())
(6)遍历循环
(7)成员运算
[1]in
[2]not in
【八】数据类型总结
按存值个数区分 | |
---|---|
只能存一个值:可称为标量/原子类型 | 数字类型、字符串 |
可以存放多个值:可称为容器类型 | 列表、元祖、字典 |
按照访问方式区分 | |
---|---|
直接访问:只能通过变量名访问整个值 | 数字类型 |
顺序访问:可以通过索引访问指定的值,索引代表顺序,又称为序列类型 | 字符串、列表、元祖 |
key访问:可以用key访问指定的值,又称为映射类型 | 字典 |
按可变不可变区分 | |
---|---|
可变类型 | 列表、字典 |
不可变类型 | 数字、字符串、元祖 |
__EOF__

本文链接:https://www.cnblogs.com/dream-ze/p/17840566.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17840566.html