Python高级变量类型
Python数据类型
Python中数据类型可以分为数字型和非数字型
- 数字型
- 整型(int)
- 浮点型(float)
- 布尔型(bool)
- 真 True 非0整 --非零即真
- 假 False 0
- 复数型(complex)
- 主要用于科学计数,例如:平面场问题,波动问题,电感电容等问题
- 非数字型
- 字符串
- 列表
- 元组
- 字典
在Python中,所有非数字型变量都支持以下特点:
- 都是一个序列 sequence,也可以理解为容器
- 取值[]
- 遍历 for in
- 计算长度、最大/最小值、比较、删除
- 链接
+
和重复 *
- 切片
1、列表
1.1、列表的定义
- List(列表)是Python中使用最频繁的数据类型,在其它语言中通常叫做数组
- 专门用于存储一串信息
- 列表用[]定义,数据之间使用
,
分隔
- 列表的索引从0开始
从列表中取值时,如果超出索引范围,程序会报错
1.2、列表常用操作
示例代码
点击查看代码
| |
| |
| name_list = ["张三","李四","王五"] |
| |
| print(name_list[1]) |
| print(name_list.index("张三")) |
| |
| name_list[1] = "lisi" |
| |
| |
| name_list.append("张三") |
| |
| name_list.insert(3,"王小二") |
| |
| temp_list = ["孙悟空","猪八戒"] |
| name_list.extend(temp_list) |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| del name_list[1] |
| |
| str_len = len(name_list) |
| print("列表的长度为:%d " % str_len) |
| |
| count = name_list.count("张三") |
| print("张三出现的次数:%d" % count) |
| print(name_list) |
| |
分类 |
关键字/函数/方法 |
说明 |
增加 |
列表.insert(索引,数据) |
在指定位置插入数据 |
|
列表.append(数据) |
在末尾追加数据 |
|
列表.extend(列表2) |
将列表2的数据追加到列表 |
修改 |
列表[索引]=数据 |
修改指定索引的数据 |
删除 |
del 列表[索引] |
删除指定索引的数据 |
|
列表.remove[数据] |
删除第一个出现的指定数据 |
|
列表.pop |
删除末尾数据 |
|
列表.pop(索引) |
删除指定索引数据 |
统计 |
len(列表) |
列表长度 |
|
列表.count(数据) |
数据在列表中出现的次数 |
排序 |
列表.sort() |
升序排序 |
|
列表.sort(reverse=True) |
降序排序 |
|
列表.reverse() |
逆序、反转 |
**关键字、函数和方法(科普)
关键字后面不需要使用括号
- 函数封装了独立功能,可以直接调用
函数名(参数)
- 方法和函数类似,同样是封装了独立的功能
- 方法需要通过对象来调用,表示针对这个对象要做的操作
对象.方法名(参数)
在变量后面输入.
,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多
1.3、循环遍历
- 遍历就是从头到尾依次从列表中获取数据
- 在
Python
中为了提高列表的遍历效率,专门提供的迭代iteration遍历
- 使用
for
就能够实现迭代遍历
点击查看代码
| |
| for name in name_list: |
| 循环内部针对列表元素进行操作 |
| print(name) |
应用场景
- 尽管
Python
的列表中可以存储不同类型的数据
- 但在开发中,更多的应用场景是
- 列表存储相同类型的数据
- 通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
2、元组
2.1、元组的定义
Tuple
(元组)与列表类似,不同之处在于元组的元素不能修改
- 元组表示多个元素组成的序列
- 元组在
Python
开发中,有特定的应用场景
- 用于存储一串信息,数据之间使用
,
分隔
- 元组用
()
定义
- 元组的索引从
0
开始
- 索引就是数据在元组中的位置编号
创建空元组
tuple = ()
元组中只包含一个元素时,需要再元素后面添加逗号
info_tuple = (10,)
2.2、元组常用操作
- 在python中定义一个元组,例如:
info=()
- 输入
info.
按下TAB
键,python会提示元组能够使用的函数如下:
info.count info.index
2.3、循环遍历
- 取值就是从元组中获取存储在指定位置的数据
- 遍历就是从头到尾依次从元组中获取数据
点击查看代码
| |
| for item in info: |
| 循环内部针对元组进行操作 |
| print(item) |
| |
> 在Python中,可以使用`for`循环遍历所有非数字型类型的变量:列表、元组、字典以及字符串
2.3、应用场景
- 尽管可以使用
for in
遍历元组
- 但是在开发中,更多的应用场景是:
- 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据
- 格式字符串,格式化字符串后面的
()
本质上就是一个元组
- 让列表不可以被修改,以保护数据安全
点击查看代码
| |
| info = ("zhangsan",18) |
| print("%s 的年龄是 %d" % info) |
| |
| info_str="%s 的年龄是 %d" % info |
| print(info_str) |
元组和列表之间的转换
- 使用
list
函数可以把元组转换成列表
list(元组)
- 使用
tuple
函数可以把列表转换成元组
tuple(列表)
3、字典
3.1、字典的定义
dictionary
(字典)是除列表以外Python
之中最灵活的数据类型
- 字典同样可以用来存储多个数据
- 和列表的区别
- 列表是有序的对象集合
- 字典是无序的对象集合
*字典用{}
定义
*字典使用键值对存储数据,键值对之间使用,
分隔
- 键
key
是索引
- 值
value
是数据
- 键和值之间使用
:
分隔
- 键必须是唯一的
- 值可以取任何数据类型,但键只能使用字符串、数字或元组
点击查看代码
| xiaoming={"name":"小明", |
| "age":"18", |
| "gender":True, |
| "height":1.75} |
### 3.2、字典的常用操作
点击查看代码
| |
| |
| a_dict = {"name":"小明"} |
| |
| print(a_dict["name"]) |
| |
| |
| a_dict["age"] = 18 |
| |
| a_dict["name"] = "小小明" |
| |
| |
| |
| card_list = [ |
| { |
| "name" : "张三", |
| "phone" : "123456", |
| "qq" : "123456" |
| }, |
| { |
| "name" : "李四", |
| "phone" : "10086", |
| "qq" : "789101112" |
| } |
| ] |
| for card_info in card_list: |
| print(card_info) |
| |
| xiaoming_dict={"name" : "小明","age" : 18} |
| |
| print("字典长度:%d" % len(xiaoming_dict)) |
| |
| |
| temp_dict = {"height" : 1.75,"age" : 20} |
| |
| xiaoming_dict.update(temp_dict) |
| print("字典内容:%s" % xiaoming_dict) |
| |
| |
| xiaoming_dict.clear() |
| print("字典内容:%s" % xiaoming_dict) |
| |
3.3、循环遍历
点击查看代码
| |
| for k in xiaoming: |
| print("%s:%s" % (k,xiaoming[k])) |
3.4、应用场景
- 尽管可以使用
for in
遍历字典
- 但是在开发中,更多的应用场景是:
- 使用多个键值对,存储描述一个
物体
的相关信息 --描述更复杂的数据信息
- 将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
点击查看代码
| card_list = [{"name":"张三", |
| "qq":"1234567890", |
| "phone":"13243538902"}, |
| {"name":"李四", |
| "qq":"1234567890", |
| "phone":"13243538903"} |
| ] |
4、字符串
4.1、字符串的定义
- 字符串就是一串字符,是编程语言中表示文本的数据类型
- 在Python中可以使用一对引号
"
或者一对单引号'
定义一个字符串
- 虽然可以使用
\"
或者\'
做字符串的转义,但是在实际开发中:
*如果字符串内部需要使用"
,可以使用'
定义字符串
*也可以使用for
循环遍历字符串中每一个字符
大多数编程语言都是用"
来定义字符串
点击查看代码
| string = "Hello Python" |
| for c in string: |
| print(c) |
字符串统计操作
点击查看代码
| |
| str_1 ="hello world" |
| |
| print(len(str_1)) |
| |
| |
| print(str_1.count("llo")) |
| print(str_1.count("abc")) |
| |
| |
| print(str_1.index("llo")) |
4.2、 字符串的常用操作
- 在python中定义一个字符串,列如:
hello_str=""
序号 |
方法及描述 |
1 |
capitalize() |
|
将字符串的第一个字符转换为大写 |
2 |
center(width, fillchar) |
|
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 |
count(str, beg= 0,end=len(string)) |
|
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 |
bytes.decode(encoding="utf-8", errors="strict") |
|
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 |
encode(encoding='UTF-8',errors='strict') |
|
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
6 |
endswith(suffix, beg=0, end=len(string)) |
|
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
7 |
expandtabs(tabsize=8) |
|
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 |
find(str, beg=0, end=len(string)) |
|
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
9 |
index(str, beg=0, end=len(string)) |
|
跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
10 |
isalnum() |
|
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 |
isalpha() |
|
如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
12 |
isdigit() |
|
如果字符串只包含数字则返回 True 否则返回 False.. |
13 |
islower() |
|
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 |
isnumeric() |
|
如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 |
isspace() |
|
如果字符串中只包含空白,则返回 True,否则返回 False. |
16 |
istitle() |
|
如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 |
isupper() |
|
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 |
join(seq) |
|
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 |
len(string) |
|
返回字符串长度 |
20 |
ljust(width[, fillchar]) |
|
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 |
lower() |
|
转换字符串中所有大写字符为小写. |
22 |
lstrip() |
|
截掉字符串左边的空格或指定字符。 |
23 |
maketrans() |
|
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 |
max(str) |
|
返回字符串 str 中最大的字母。 |
25 |
min(str) |
|
返回字符串 str 中最小的字母。 |
26 |
replace(old, new [, max]) |
|
把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
27 |
rfind(str, beg=0,end=len(string)) |
|
类似于 find()函数,不过是从右边开始查找. |
28 |
rindex( str, beg=0, end=len(string)) |
|
类似于 index(),不过是从右边开始. |
29 |
rjust(width,[, fillchar]) |
|
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 |
rstrip() |
|
删除字符串末尾的空格或指定字符。 |
31 |
split(str="", num=string.count(str)) |
|
以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 |
splitlines([keepends]) |
|
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 |
startswith(substr, beg=0,end=len(string)) |
|
检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 |
strip([chars]) |
|
在字符串上执行 lstrip()和 rstrip() |
35 |
swapcase() |
|
将字符串中大写转换为小写,小写转换为大写 |
36 |
title() |
|
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 |
translate(table, deletechars="") |
|
根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 |
upper() |
|
转换字符串中的小写字母为大写 |
39 |
zfill (width) |
|
返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 |
isdecimal() |
|
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
字符串中的转义字符
\t
在控制台输出一个制表符,协助在输出文本时垂直方向保持对齐
\n
在控制台输出一个换行符
制表符的功能是在不适用表格的情况下在垂直方向按列对齐文本
转义字符 |
描述 |
\ |
反斜杠符号 |
' |
单引号 |
" |
双引号 |
\n |
换行 |
\t |
横向制表符 |
\r |
回车 |
字符串的判断方法
点击查看代码
| |
| str_temp = " \t\n\r" |
| print(str_temp.isspace()) |
| |
| num_str = "1.1" |
| print(num_str) |
| |
| print(num_str.isdecimal()) |
| |
| print(num_str.isnumeric()) |
| |
| print(num_str.isdigit()) |
| |
字符串的查找和替换
点击查看代码
| hello_str = "hello world" |
| |
| print(hello_str.startswith("hello")) |
| |
| print(hello_str.endswith("world")) |
| |
| print(hello_str.find("llo")) |
| |
| print(hello_str.find("abc")) |
| |
| |
| print(hello_str.replace("world","python")) |
| print(hello_str) |
| |
4.3、字符串的切片
- 切片方法适用于字符串、列表、元组
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
- 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
- 字典是一个无序的集合,是使用键值对保存数据
字符串[开始索引:结束索引:步长]
注意
- 指定的区间属于左闭右开型
[开始索引,结束索引]
=>开始索引>=范围<结束索引
- 从
起始
位开始,到结束
位的前一位结束(不包含结束位本身)
- 从头开始,开始索引数字可以省略,冒号不能省略
- 到末尾结束,结束索引数字可以省略,冒号不能省略
- 步长默认为
1
,如果连续切片,数字和冒号都可以省略
点击查看代码
| |
| |
| temp_str = "0123456789" |
| |
| print(temp_str[:2]) |
| |
| print(temp_str[2:]) |
| |
| print(temp_str[2:-1]) |
| |
| print(temp_str[0::2]) |
| |
| print(temp_str[-1::-1]) |
| |
5、公共方法
5.1、Python内置函数
Python包含了一下内置函数:
函数 |
描述 |
备注 |
len(item) |
计算容器中元素个数 |
|
del(item) |
删除变量 |
del有两种方式 |
max(item) |
返回容器中元素最大值 |
如果是字典,只针对key比较 |
min(item) |
返回容器中元素最小值 |
如果是字典,只针对key比较 |
cmp(item1,item2) |
比较两个值,-1小于/0 相等/1 大于 |
Python 3.x取消了cmp函数 |
注意
5.2、切片
描述 |
Python表达式 |
结果 |
支持的数据类型 |
切片 |
"0123456789"[::-2] |
"97531" |
字符串、列表、元组 |
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
- 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
- 字典是一个无序的集合,是使用键值对保存数据
5.3、运算符
运算符 |
Python表达式 |
结果 |
描述 |
支持的数据类型 |
+ |
[1,2]+[3,4] |
[1,2,3,4] |
合并 |
字符串、列表、元组 |
* |
["Hi!"]*4 |
["Hi!","Hi!","Hi!","Hi!"] |
重复 |
字符串、列表、元组 |
in |
3 in (1,2,3) |
True |
元素是否存在 |
字符串、列表、元组、字典 |
not in |
4 not in (1,2,3) |
True |
元素是否不存在 |
字符串、列表、元组、字典 |
> >= == < <= |
(1,2,3)<(2,2,3) |
True |
元素比较 |
字符串、列表、元组 |
注意
in
在对字典操作时,判断的是字典的键
in
和not in
被称为成员运算符
5.4、完整的for循环语法
点击查看代码
| for 变量 in 集合: |
| 循环体代码 |
| else: |
| 代码 循环结束后,会执行的代码,如果break退出循环后,不会执行else中的代码 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)