Python-Python高级变量类型
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 = ["张三","李四","王五"]
# 1.取值和取索引
print(name_list[1])
print(name_list.index("张三"))
# 2.修改
name_list[1] = "lisi"
# 3.新增
# append方法可以向列表的末尾追加数据
name_list.append("张三")
# insert方法可以向列表中指定索引位置插入数据
name_list.insert(3,"王小二")
# extend方法可以把其它列表中的完整内容插入列表末尾
temp_list = ["孙悟空","猪八戒"]
name_list.extend(temp_list)
# 4.删除
# remove可以从列表中删除指定的第一次出现的数据,如果数据不存在,程序会报错
#name_list.remove("王五")
# pop方法默认可以把列表中最后一个元素弹出删除
#name_list.pop()
# pop方法可以删除指定索引位置的元素
#name_list.pop(3)
# clear方法可以清空列表
#name_list.clear()
# del关键字删除列表元素
del name_list[1]
# 5.统计列表元素长度
str_len = len(name_list)
print("列表的长度为:%d " % str_len)
# 6.统计数据在列表中出现的次数
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() | 逆序、反转 |
**关键字、函数和方法(科普)
- 关键字是Python内置的、具有特殊意义的标识符
关键字后面不需要使用括号
- 函数封装了独立功能,可以直接调用
函数名(参数)
- 方法和函数类似,同样是封装了独立的功能
- 方法需要通过对象来调用,表示针对这个对象要做的操作
对象.方法名(参数)
在变量后面输入
.
,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多
1.3、循环遍历
- 遍历就是从头到尾依次从列表中获取数据
- 在循环体内部针对每一个元素,执行相同的操作
- 在
Python
中为了提高列表的遍历效率,专门提供的迭代iteration遍历 - 使用
for
就能够实现迭代遍历
点击查看代码
# for循环内部使用的变量 in 列表
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 循环内部使用的变量 in 元组
for item in info:
循环内部针对元组进行操作
print(item)
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}
点击查看代码
# 使用多个键值对,存储描述一个物体的相关信息,描述更复杂的数据信息、
# 定义一个字典
a_dict = {"name":"小明"}
# 1.取值
print(a_dict["name"])
# 2.新增/修改
# 如果key不存在,会新增键值对
a_dict["age"] = 18
# 如果key存在,会修改已存在的键值对
a_dict["name"] = "小小明"
# 4.删除 a_dict.prop("name");如果key不存在,则程序报错
# 将多个字典放到一个列表中再进行遍历
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}
# 1.统计键值对数量
print("字典长度:%d" % len(xiaoming_dict))
# 2.合并字典
temp_dict = {"height" : 1.75,"age" : 20}
# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
print("字典内容:%s" % xiaoming_dict)
# 3.清空字典
xiaoming_dict.clear()
print("字典内容:%s" % xiaoming_dict)
3.3、循环遍历
- 遍历就是依次从字典中获取所有键值对
点击查看代码
# for 循环内部使用的`key的变量` in 字典
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"
# 1.统计字符串长度
print(len(str_1))
# 2.统计某个小字符串出现的次数
print(str_1.count("llo"))
print(str_1.count("abc"))
# 3.某一个子字符串出现的位置
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)
# isdecimal只能判断单纯的数字
print(num_str.isdecimal())
# isnumeric能判断全角数字、汉字数字
print(num_str.isnumeric())
# isdigit能判断全角数字、(1)、\u00b2
print(num_str.isdigit())
字符串的查找和替换
点击查看代码
hello_str = "hello world"
# 1.判断是否以指定字符串开始
print(hello_str.startswith("hello"))
# 2.判断是否以指定字符串结束
print(hello_str.endswith("world"))
# 3.查找指定字符串
print(hello_str.find("llo"))
# find方法如果指定的字符串不存在则会返回-1
print(hello_str.find("abc"))
# 4.替换字符串
# 注意:replace方法执行完成之后,会返回一个新的字符串,不会修改原有字符串
print(hello_str.replace("world","python"))
print(hello_str)
4.3、字符串的切片
- 切片方法适用于字符串、列表、元组
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
- 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
- 字典是一个无序的集合,是使用键值对保存数据
字符串[开始索引:结束索引:步长]
注意
- 指定的区间属于左闭右开型
[开始索引,结束索引]
=>开始索引>=范围<结束索引
- 从
起始
位开始,到结束
位的前一位结束(不包含结束位本身)
- 从
- 从头开始,开始索引数字可以省略,冒号不能省略
- 到末尾结束,结束索引数字可以省略,冒号不能省略
- 步长默认为
1
,如果连续切片,数字和冒号都可以省略
点击查看代码
# 列表、元组、字符串都支持切片,但字典不支持切片,因为字典是无序的,没有索引
# 语法:字符串[开始索引:结束索引:步长]
temp_str = "0123456789"
# 截取索引0-2位置的字符串,不包括索引位置2
print(temp_str[:2])
# 截取索引2-结尾的字符串
print(temp_str[2:])
# 截取索引2-结尾(不包含结尾)的字符串
print(temp_str[2:-1])
# 截取索引为0并且步长为2的字符串
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函数 |
注意
- 字符串比较符合一下规则:"0"<"A"<"a"
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循环语法
- 在
Python
中完整的for循环
的语法如下:
点击查看代码
for 变量 in 集合:
循环体代码
else:
代码 循环结束后,会执行的代码,如果break退出循环后,不会执行else中的代码
本文来自博客园,作者:capser,转载请注明原文链接:https://www.cnblogs.com/caspertd/p/16495133.html