高级变量
1 列表
1.1 列表的定义
- List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组
- 专门用于存储一串信息
- 列表用[]定义,数据之间使用,分隔
- 列表的索引从0开始
- 索引就是数据在列表中的位置编号,索引又可以被称为下标
注意:从列表中取值时,如果超出索引范围,程序会报错
序号 | 分类 | 关键字/函数/方法 | 说明 |
---|---|---|---|
1 | 增加 | 列表.insert(索引,数据) | 在指定位置插入数据 |
列表.append(数据) | 在末尾追加数据 | ||
列表.extend(列表2) | 将列表2的数据追加到列表 | ||
2 | 修改 | 列表[索引]=数据 | 修改指定索引的数据 |
3 | 删除 | del列表[索引] | 修改指定索引的数据 |
列表.remove(数据) | 删除第一个出现的指定数据 | ||
列表.pop | 删除末尾数据 | ||
列表.pop(索引) | 删除指定索引数据 | ||
列表.clear | 清空列表 | ||
4 | 统计 | len(列表) | 列表长度 |
列表.count(数据) | 数据在列表中出现的次数 | ||
5 | 排序 | 列表.sort() | 升序排序 |
列表.sort(reverse=True) | 降序排序 | ||
列表.reverse() | 逆序、反转 |
del关健字本质上是用来将一个变量从内存中删除的,不建议使用
array = [1, 2, 3]
array2 = [3, 4, 2]
# 取值
print(array[0])
print(array.index(2))
# 修改
array[2] = 5
print(array[2])
# 增加
array.append(4)
array.insert(3, 8)
array.extend(array2)
# 删除
array.remove(4)
array.pop()
array.pop(3)
array.clear()
print(array)
输出:
1
1
5
[]
array = [1, 2, 3,1]
# 统计
length = len(array)
print(length)
count = array.count(1)
print(count)
输出:
4
2
array = [1, 2, 3, 52, 21, 5]
# 排序
array.sort()
print(array)
array.sort(reverse=True)
print(array)
array.reverse()
print(array)
输出:
[1, 2, 3, 5, 21, 52]
[52, 21, 5, 3, 2, 1]
[1, 2, 3, 5, 21, 52]
1.2 循环遍历
- 遍历就是从头到尾依次从列表中获取数据
- 在循环体内部针对每一个元素,执行相同的操作
- 在Python中为了提高列表的遍历效率,专门提供的迭代iteration遍历
- 使用 for就能够实现迭代遍历
#for循环内部使用的变量in列表
for name in name_list:
# 循环内部针对列表元素进行操作
print(name)
应用场景
- 尽管Python的列表中可以存储不同类型的数据
- 但是在开发中,更多的应用场景是
- 列表存储相同类型的数据
- 通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
2 元组
2.1
- Tuple(元组)与列表 相似,不同在于元组的元素不能修改
- 元组表示多个元素组成的序列
- 元组在Python中有特定的应用场景
- 用于存储一串 信息 ,数据之间使用,分隔
- 元组用()定义
- 索引 从0开始
- 索引 相当于元组数据的下标
创建空元组
tuple = ()
元组中只包含一个元素时,需要在元素后面添加逗号
tuple = (50,)
2.2 常用操作
2.2元组常用操作
tuple.count
tuple.index
示例:
tuple1 = (8, "egf", "wfewe",8)
# index
print(tuple1[1])
print(tuple1.index(8))
# count
print(tuple1.count(8))
输出:
egf
0
2
2.3 循环遍历
- 取值就是从元组中获取存储在指定位置的数据
- 遍历就是从头到尾 依次从元组中获取数据
#for循环内部使用的变量in元组
for item in tuple:
# 循环内部针对列表元素进行操作
print(item)
- 在Python中,可以使用for循环遍历所有非数字型类型的变量:列表、元组、字典以及字符串
- 在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
2.4 应用场景
- 在开发中,应用场景是:
-
- 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据
-
- 格式字符串,格式化字符串后面的()本质上就是一个元组
-
- 让列表不可以被修改,以保护数据安全
-
#格式化字符串后面的()本质上就是元组
info = ("zhangsan",18)
print("%s的年龄是%d" % info)
输出:
zhangsan的年龄是18
格式化字符串后面的()本质上就是元组
元组和列表之间的转换
- 使用list函数可以把元组转换成列表
list(元组)
- 使用tuple函数可以把列表转换成元组
tuple(列表)
3 字典
3.1 字典的定义
- dictionary(字典)是除列表以外最灵活的数据类型
- 字典存储多个数据
- 通常存储描述一个物体的相关信息
- 和列表的区别
- 列表是有序的对象集合
- 字典是无序的对象集合
- 字典用{}定义
- 字典使用键值对存储数据,键值对之间使用,分隔
- 键key是索引
- 值value是数据
- 键和值之间使用:分隔
- 键必须是唯一的
- 值可以取任何数据类型,但键只能使用字符串、数字或元组
xiaoming = {"name": "小明",
"age": 18,
"gender": True, "height": 1.75}
3.2 字典常用操作
能够使用的函数如下:
tuple.clear tuple.items tuple.setdefault
tuple.copy tuple. keys tuple.update
tuple.fromkeys tuple. pop tuple.values
tuple.get tuple.popitem
xiaoming = {"name": "小明",
"age": 18,
"gender": True, "height": 1.75}
# 取值
print(xiaoming["name"])
# 增加/修改
print(xiaoming)
xiaoming["weight"] = 75
print(xiaoming)
xiaoming["name"] = "iwsfd"
print(xiaoming)
# 删除
xiaoming.pop("name")
print(xiaoming)
xiaoming = {"name": "小明",
"age": 18,
"gender": True}
# 统计键值对数量
print(len(xiaoming))
# 合并字典
temp = {"height": 1.75,
"age": 20}
xiaoming.update(temp)
# !!!!!!!!注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
print(xiaoming)
# 清空字典
xiaoming.clear()
print(xiaoming)
输出:
小明
{'name': '小明', 'age': 18, 'gender': True, 'height': 1.75}
{'name': '小明', 'age': 18, 'gender': True, 'height': 1.75, 'weight': 75}
{'name': 'iwsfd', 'age': 18, 'gender': True, 'height': 1.75, 'weight': 75}
{'age': 18, 'gender': True, 'height': 1.75, 'weight': 75}
3
{'name': '小明', 'age': 20, 'gender': True, 'height': 1.75}
{}
如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
3.3 循环遍历
- 遍历就是依次从字典中获取所有键值对
#for循环内部使用的键变量in字典
for k in direction:
# 循环内部针对列表元素进行操作
print("%s is %s" % (k,direction[k]))
实际开发中,针对字典的循环遍历需求并不是很多
3.4 应用场景
- 应用场景是:
- 使用多个键值对,存储描述一个物体的相关信息
- 将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
card_list = [
{"name": "张三", "qq": "12345", "phone": "110"},
{"name": "李四", "qq": "54321", "phone": "10086"}
]
for card_info in card_list:
print(card_info)
输出:
{'name': '张三', 'qq': '12345', 'phone': '110'}
{'name': '李四', 'qq': '54321', 'phone': '10086'}
4 字符串
4.1 字符串的定义
- 字符串是编程语言中表示文本的数据类型
- 在Pythbn中可以使用一对双引号"或者一对单引号'定义一个字符串
- 虽然可以使用"或者'做字符串的转义,但是在实际开发中:
- 如果字符串内部需要使用",可以使用'定义字符串
- 如果字符串内部需要使用',可以使用"定义字符串
- 虽然可以使用"或者'做字符串的转义,但是在实际开发中:
- 可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始
- 也可以使用for循环遍历字符串中每一个字符
大多数编程语言都是用"来定义字符串
string = "Hello Python"
for c in string:
print(c)
4.2 字符串常用操作
- 判断类型
方法 | 说明 |
---|---|
string.isspace() | 如果string中只包含空格,则返回True |
string.isalnum() | 如果string至少有一个字符并且所有字符都是字母或数字则返回True |
string.isalpha() | 如果string至少有一个字符并且所有字符都是字母则返回True |
string.isdecimal() | 如果string 只包含数字则返回True,全角数字 |
string.isdigit() | 如果string 只包含数字则返回True,全角数字、(1)、\u00b2 |
string.isnumeric() | 如果string 只包含数字则返回True,全角数字,汉字数字 |
string.istite() | 如果string是标题化的(每个单词的首字母大写)则返回True |
string.islower() | 如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True |
string.isupper() | 如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True |
#空白字符
space_str = " \t\n\r"
print(space_str.isspace())
#只包含数字
num_str = "1"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
#不包含小数
num_str = "1.1"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
#除decimal函数,其他可以识别unicode数字
num_str = "\u00b2"#(1)
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
#中文数字 只有numeric
num_str="一千"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
输出:
True
1
True
True
True
1.1
False
False
False
²
False
True
True
一千
False
False
True
- 查找替换
方法 | 说明 |
---|---|
string.startswith(str) | 检查字符串是否是以str开头,是则返回True |
string.endswith(str) | 检查字符串是否是以str结束,是则返回True |
string.find(str, start=0,end=len(string)) | 检测str是否包含在string中,如果start 和end指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 |
string.rfind(str, start=0,end=len(string)) | 类似于find()函数,不过是从右边开始查找 |
string.rindex(str,start=0,end=len(string)) | 跟find()方法类似,只不过如果str不在string会报错 |
string.rindex(str,start=0,end=len(string)) | 类似于index(),不过是从右边开始 |
string.replace(old_str,new_str,num=string.count(old)) | 把string中的old_str替换成new_str,如果num指定,则替换不超过num次 |
hello_str = "hello world"
# 指定字符串开始
print(hello_str.startswith("Hello"))
# 指定字符结束
print(hello_str.endswith("world"))
# 查找指定字符串
print(hello_str.find("llo"))
# index方法找不到会报错 find不会
print(hello_str.find("abd"))
# 替换字符串 不会修改原有字符串
print(hello_str.replace("world", "hhhh"))
print(hello_str)
输出:
False
True
2
-1
hello hhhh
hello world
- 大小写转换
方法 | 说明 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.title() | 把字符串的每个单词首字母大写 |
string.lower() | 转换string中所有大写字符为小写 |
string.upper() | 转换string中的小写字母为大写 |
string.swapcase() | 翻转string中的大小写 |
- 文本对齐
方法 | 说明 |
---|---|
string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度width 的新字符串 |
string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度width的新字符串 |
string.center(width) | 返回一个原字符串居中,并使用空格填充至长度width的新字符串 |
- 去除空白字符
方法 | 说明 |
---|---|
string.lstrip() | 截掉string左边(开始)的空白字符 |
string.rstrip() | 截掉string右边(末尾)的空白字符 |
string.strip() | 截掉string左右两边的空白字符 |
- 拆分与连接
方法 | 说明 |
---|---|
string.partition(str) | 把字符串string分成一个3元素的元组(str前面, str, str后面) |
string.rpartition(str) | 类似于partition()函数,不过是从右边开始查找 |
string.split(str=“”;num) | 以str为分隔符切片string,如果num有指定值,则仅分隔num + 1个子字符串,str默认包含’\r’,‘\t’,'\n’和空格 |
string.splitlines() | 按照行(‘\r’,‘\n’,‘\r\n’)分隔,返回一个包含各行作为元素的列表 |
string.join(seq) | 以string 作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串 |
4.3 字符串切片
- 切片方法适用于字符串、列表、元组
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
- 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
- 字典是一个无序的集合,是使用键值对保存数据
语法:
字符串[开始索引:结束索引:步长]
注意:
- 指定的区间属于左闭右开型[开始索引,结束索引)=>开始索引>= 范围 <结束索引
- 从起始位开始,到结束位的前一位结束(不包含结束位本身)
- 从头开始,开始索引数字可以省略,冒号不能省略
- 到末尾结束,结束索引数字可以省略**,冒号不能省略**
- 步长默认为1,如果连续切片,数字和冒号都可以省略,步长是正数,是从左向右切。步长是负数是,切边从右到左。
5 公共方法
5.1 Python内置函数
Python包含了以下内置函数:
函数 | 描述 | 备注 |
---|---|---|
len(item) | 计算容器中元素个数 | |
del(item) | 删除变量 | del有两种方式 |
max(item) | 返回容器中元素最大值 | 如果是字典,只针对key比较 |
min(item) | 返回容器中元素最小值 | 如果是字典,只针对key比较 |
string.swapcase() | 翻转string中的大小写 |
注意
- 字符串大小:“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被称为成员运算符