数据序列
- 字符串
-
- [1. 字符串基础](#1. 字符串基础)
-
- [1.1 字符定义和使用](#1.1 字符定义和使用)
- [1.2 字符串定义细节](#1.2 字符串定义细节)
- [1.3 字符串下标访问](#1.3 字符串下标访问)
- [2. 字符串切片](#2. 字符串切片)
- [3. 字符串的常用操作](#3. 字符串的常用操作)
-
- [3.1 find](#3.1 find)
- [3.2 replace](#3.2 replace)
- [3.3 split](#3.3 split)
- [3.4 join](#3.4 join)
- 列表
-
- [1. 列表基础](#1. 列表基础)
- [2. 查询操作](#2. 查询操作)
- [3. 添加操作](#3. 添加操作)
-
- [3.1 append](#3.1 append)
- [3.2 extend](#3.2 extend)
- [3.3 insert](#3.3 insert)
- [4. 删除操作](#4. 删除操作)
-
- [4.1 pop](#4.1 pop)
- [4.2 remove](#4.2 remove)
- [4.3 clear](#4.3 clear)
- [5. 修改操作](#5. 修改操作)
-
- [5.1 下标修改](#5.1 下标修改)
- [5.2 reverse](#5.2 reverse)
- [5.3 排序](#5.3 排序)
- [6. 其它操作](#6. 其它操作)
-
- [6.1 复制](#6.1 复制)
- [6.2 for循环遍历](#6.2 for循环遍历)
- [6.3 列表嵌套](#6.3 列表嵌套)
- 元组
-
- [1. 元组基础](#1. 元组基础)
- [2. 常见操作](#2. 常见操作)
- 字典
-
- [1. 字典基础](#1. 字典基础)
- [2. 常见操作](#2. 常见操作)
- [3. 遍历操作](#3. 遍历操作)
字符串
1. 字符串基础
1.1 字符定义和使用
python
# 1. 自定义变量
# 2. 在变量中存储相应字符串
val1 = "hello"
val2 = '你好'
print(val1)
print(val2)
1.2 字符串定义细节
- 单引号字符串
- 双引号字符串
- 三引号字符串
- 特殊符号处理
python
# 1 单引号
val1 = '单引号测试'
# 2 双引号
val2 = "双引号测试"
# 3 三引号
val3 = """三引号测试"""
val3 = '''三引号测试'''
# 4 转入字符串的特殊符号
val4 = "I\'m itcastYY"
# 5 去除特殊字符功能
val5 = r"I \' m itcastYY"
1.3 字符串下标访问
- 可以将字符串当做是装有很多内容的容器,通过编号可以获取到指定位置的字符
- 下标是人为定义的一种计数规则,默认下标从 0 开始
- 下标的使用语法为
字符串名[下标值]
python
# 下标获取对应位置上的字符
str1 = "hello"
print(str1[0]) # h
print(str1[1]) # e
2. 字符串切片
切片语法:字符串[开始位置下标:结束位置下标:步长]
示例:
python
name = "abcdefg"
print(name[2:5:1]) # cde
print(name[2:5]) # cde
print(name[:5]) # abcde
print(name[1:]) # bcdefg
print(name[:]) # abcdefg
print(name[::2]) # aceg
print(name[:-1]) # abcdef, 负1表示倒数第一个数据print(name[-4:-1]) # def
print(name[::-1]) # gfedcba
注意:
- 结束下标位置对应的字符不会被截取到【俗称顾头不顾尾】
- 下标,正负都可以,不表示大小,只表示开始方向
- 步长用于设置截取间隔,默认步长为1
3. 字符串的常用操作
3.1 find
功能 : 被查找字符是否存在于当前字符串中,如果存在则返加开始下标,不存在则返回 -1
语法: 字符串.find(被查找字符,开始位置,结束位置 )
python
mystr = "如果你给我的,和你给别人的是一样的,那我就不要了"
print(mystr.find('你')) # 22
print(mystr.find('你', 3, 20)) # 8
print(mystr.find('你我')) # -1
注意:
- 开始位置和结束位置可以省略,表示从头找到尾
- 如果被查找字符重复存在,则返回第一次出现位置的下标
- 被查找字符如果不存在则返回 -1
3.2 replace
功能:使用新的子串,按规则替换旧的字符串内容
语法: 字符串.replace(原字符串, 新子串, 替换次数)
python
str_val = "春眠不觉晓,处处闻啼鸟"
new_str = str_val.replace("闻啼鸟", "蚊子咬", 1)
print(str_val)
print(new_str)
注意:
- 旧字符可能存在多次,此时可通过设置替换次数来决定具体替换多少个
- 字符串属于不可变数据类型,所以修改并不会影响原来的空间
3.3 split
功能:按照指定字符来分割字符串
语法: 字符串.split(分割符,num)
python
mystr = "hello world and itcast and itheima and Python"
# 结果:['hello world ', ' itcast ', ' itheima ', ' Python']
print(mystr.split('and'))
# 结果:['hello world ', ' itcast ', ' itheima and Python']
print(mystr.split('and', 2))
# 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python']
print(mystr.split(' '))
# 结果:['hello', 'world', 'and itcast and itheima and Python']
print(mystr.split(' ', 2))
注意:
- num 为具体数值,当分割符存在多次时,可以设定使用几次
- 默认不传入分割符则会以空格为边界
3.4 join
功能:一般用于将列表按指定子字符合并为字符串
语法: 字符串.join(一般为列表)
python
list1 = ['张三', '李四', '小五', '黑']
print('_'.join(list1)) # 结果:张三_李四_小五_黑
列表
1. 列表基础
- List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组
- 专门用于存储一串信息(一组数据)
定义方式:
- 方式一:用 [] 定义,数据之间使用英文逗号 , 分隔
python
name_list = []
name_list = ["zhangsan", "lisi", "wangwu"]
- 方式二:通过类实例化方式定义
python
data_list = list()
2. 查询操作
- 下标就是数据在列表中的位置编号,下标又可以被称为索引
- 列表的下标从0开始
python
name_list = ['张三', '李四']
print(name_list[0]) # 张三
print(name_list[1]) # 李四
# count函数:统计被测试值出现的次数
# 语法:列表.count(被测数据)
list_val1 = ['飞蛾扑火时', '一定是', "极快乐幸福的", "一定是"]
print(list_val1.count("一定是")) # 2
# len函数:统计当前列表元素个数
# 语法:len(列表)
list_val1 = ['飞蛾扑火时', '一定是', "极快乐幸福的", "一定是"]
print(len(list_val1)) # 4
3. 添加操作
3.1 append
功能:在列表的结尾添加数据
语法: 列表.append(被添加数据)
python
val_list = ["Web自动化", "UI自动化", "接口自动化"]
val_list.append("APP自动化")
print(val_list) # ['Web自动化', 'UI自动化', '接口自动化', 'APP自动化']
注意:
- 使用 append() 将新的值添加在列表的末尾
- 新增的值可以直接作用于原列表,固列表是可变数据类型
- 如果使用append增加一个列表,则此列表会被当做一个值添加到末尾
3.2 extend
功能:在列表结尾添加另外一个列表,可以理解为是列表合并
语法: 列表.extend(列表2)
python
num_list1 = [1, 2, 3]
num_list2 = [4, 5]
num_list1.extend(num_list2)
print(num_list1) # [1, 2, 3, 4, 5]
name_list = ["张三", '李四']
name_list.extend("王五")
print(name_list) # ['张三', '李四', '王', '五']
注:如果被添加值是不可变类型的可迭代对象,则会将其一一打散加入
3.3 insert
功能:在指定位置插入新数据
语法: 列表.insert(指定位置, 数据)
python
val_list = ["Web自动化", "UI自动化", "接口自动化"]
val_list.insert(1, "APP自动化")
print(val_list) # ['Web自动化', 'APP自动化', 'UI自动化', '接口自动化']
4. 删除操作
4.1 pop
功能:删除指定下标的数据,并且返回被删除数据
语法: 列表.pop(下标)
python
val_list = ["Web自动化", "UI自动化", "接口自动化"]
val = val_list.pop(0)
print(val, val_list) # web自动化,['UI自动化', '接口自动化']
注意:
- pop() 方法不传递参数时,默认删除列表中最后一个数据
- pop() 方法有返回值,会返回当前被删除的值
4.2 remove
功能:在列表中删除某个具体数据,删除第一个被匹配到的
语法: 列表.remove(数据)
python
val_list = ["Web自动化", "UI自动化", "接口自动化", "Web自动化"]
val = val_list.remove("Web自动化")
print(val, val_list) # None ['UI自动化', '接口自动化', 'Web自动化']
注意:
- remove 方法使用不会返回被删除的值
- 如果被删除数据出现多次,只会删除第一次出现的
4.3 clear
功能:清空列表
语法: 列表.clear()
python
val_list = ["Web自动化", "UI自动化", "接口自动化", "Web自动化"]
val_list.clear()
print(val_list) # []
5. 修改操作
5.1 下标修改
功能:通过指定下标修改对应数据
语法: 列表[下标] = 修改后的值
python
val_list = ["Web自动化", "UI自动化", "接口自动化", "Web自动化"]
val_list[1] = "碧落"
print(val_list) # ['Web自动化', '黑马程序员', '接口自动化', 'Web自动化']
5.2 reverse
功能:倒置列表,列表反转
语法: 列表.reverse()
python
num_list = [1, 2, 3, 4]
num_list.reverse()
print(num_list) # [4, 3, 2, 1]
5.3 排序
功能:将列表按指定规则进行数据排序
语法: 列表.sort(key=None, reverse=False)
python
val_list = [8, 100, 30, 10, 40, 2]
val_list.sort(reverse=True)
print(val_list) # [100, 40, 30, 10, 8, 2]
注意:reverse 表示排序规则,默认是False表示升序,设置为True表示降序
6. 其它操作
6.1 复制
语法: 列表.copy()
python
num_list1 = [1, 2, 3]
num_list2 = num_list1.copy()
num_list1.append(4)
print(num_list1) # [1, 2, 3, 4]
print(num_list2) # [1, 2, 3]
6.2 for循环遍历
使用for语法实现列表的遍
python
val_list = [8, 100, 30, 10, 40, 2]
for item in val_list:
print(item)
6.3 列表嵌套
- 列表可以多层嵌套
- 不论多少层都可以使用下标进行访问
python
person_info = [["张三", "18", "功能测试"], ["李四", "20", "自动化测试"]]
print(person_info[0][1]) # 18
元组
1. 元组基础
- 元组和列表一样,都可用于存储多个数据
- 有些数据在存储之后就不能发生改变
- 通过元组可以存放多个数据,且这些数据不能被修改
定义元组的方式:
- 用 () 定义,数据之间使用英文逗号 , 分隔
python
info_tuple = ()
info_tuple = ("zhangsan", 18, 1.75)
- 通过类实例化方式定义
python
info_tuple = tuple()
注意:元组中只包含一个元素时,需要在元素后面添加逗号
pythondata = (1,)
2. 常见操作
python
# 返回指定下标对应的元素,语法:元组[下标]
tuple1 = (1, 2, 3)
print(tuple1[1]) #
# count:统计某个数据出现的次数,语法: 列表.count(被测数据)
print(tuple1.count(3)) # 1
# len:返回目标元组的长度,语法: len(元组)
print(len(tuple1)) # 3
字典
1. 字典基础
思考:会员管理系统需要处理不同会员身份信息,如何区分不同会员?同一个会员如何明确年纪、身高、体重等数据?
- 实际业务很复杂, 需要用到不同类型的数据
- 不同类型数据在保存时应当加以区分
- 字典不仅可以保存多个数据,同时还能给不同数据 "起名字"
定义字典的方法:
- 基本结构: 字典名 = {}
- 大括号内结构为: 键名:键值 【俗称键值对】
- 多个键值对之间使用逗号隔开
python
user_info = {
"name": "xiaoming",
"age": 28,
"gender": "man"
}
2. 常见操作
python
# 在字典中增加对应的键值对,语法: 字典名['键名'] = 新增键值
info = {
16
"name": "syy",
"age": 18,
"gender": "man"
}
info["salary"] = 100000
print(info) # {'name': 'syy', 'age': 18, 'gender': 'man', 'salary': 100000}
# 删除指定字典或字典中的值,语法:del 字典[key]
del info["age"]
print(info)
# 清空整个字典,语法:字典.clear()
info.clear()
print(info) # {}
# 修改字典中对应键的值,语法: 字典["键名"] = val
info["age"] = 28
print(info)
注:
- 如果被修改的键名存在,则直接用新值更新旧值
- 如果被修改的键名不存在,则相当于新增
python
# 键名查找:通过键名来查找对应的值,语法: 字典名["键名"]
slogan = {
"slogan1": "尘归于尘,土归于土,我,归于我们",
"slogan2": '有时候我们要对自己残忍一点,不能纵容自己的伤心失望;有时候我们要对自己深爱的人残忍一点,将对他们的爱的记忆搁置',
"slogan3": "红尘十丈,茫茫的人海,竟还是自己的来处"
}
print(slogan["slogan3"])
注意:此种方法查找时,如果键名不存在则会语法报错
python
# get查找:返回对应键名的值,语法:字典名.get(key, 默认值)
print(slogan.get("abc"))
注意:如果键名不存在,不会抛出异常,而是返回None
3. 遍历操作
python
# 遍历字典的Key:循环拿到字典中的每个键名
# 语法:使用循环结构完成
slogan = {
"slogan1": "尘归于尘,土归于土,我,归于我们",
"slogan2": "有时候我们要对自己残忍一点,不能纵容自己的伤心失望",
"slogan4": "有时候我们要对自己深爱的人残忍一点,将对他们的爱的记忆搁置",
"slogan3": "红尘十丈,茫茫的人海,竟还是自己的来处"
}
for key in slogan.keys():
print(key)
# slogan1 slogan2 slogan3 slogan4
# 遍历字典的Value
for key in slogan.values():
print(key)
# 遍历字典的Key和Value:调用字典的 items()方法获取字典的键和值,并自动赋值给不同的变量
user = {
"name": "张三",
"age": 18,
"gender": "男",
}
for k, v in user.items():
print("Key=%s Value=%s" % (k, v))
# Key=name Value=张三
# Key=age Value=18
# Key=gender Value=男