1. 容器
-
定义:容纳多份数据的数据类型。Python的数据容器可以理解为C++中的数据结构,这些数据结构的方法多为“增删改查”。
-
容器类型:列表、元组、字符串、
2. 列表list
-
列表可理解为数组,下标从0开始。
-
定义
定义代码
name_list = ['zhangsan', 'lisi', 'wangwu'] # 字符串 num_list = [2, 3, 4] # 整型 li_list = [[1,2,3], ['lisi', 'wangwu'], [1]] # 列表
-
查询
查询代码
print(name_list[0]) # 输出字符串列表下标为0的元素 print(num_list[2]) # 输出整型列表下标为2的元素 print(li_list[1]) # 输出列表类型列表下标为0的元素 print(name_list[-1]) # 输出字符串列表最后一个元素 print(name_list[-2]) # 输出字符串列表倒数第二个元素
-
方法如下:
查询元素对应下标
print(name_list.index('lisi')) # 输出name_list中“lisi”的下标 print(li_list[1].index('lisi')) # 输出li_lis中1号元素中“lisi”的下标
修改
num_list[0] = 5 # 将num_list中的0号元素修改为5 num_list[-2] = 0 # 将num_list中的倒数第二个修改为0 print(num_list)
插入
name_list.insert(1, 'libai') # 在name_list的1号元素前插入'libai' print(name_list) num_list.append(0) # 在num_list末尾插入0 print(num_list) num_list.append([1, 2]) # 在num_list末尾插入列表[1, 2] print(num_list) num_list.extend(name_list) # 将name_list中的元素插入到num_list末尾 print(num_list)
删除
print(num_list) num_list.pop(7) # 删除num_list的8号元素 print(num_list)
删除查找到的元素
num_list.remove('libai') # 删除num_list中查找到的元素‘libai’ print(num_list)
统计列表中某个元素的个数
print(num_list.count(0)) # 统计num_list中0的个数
统计列表长度(元素个数)
len(num_list)
清空列表
num_list.clear() # 清空num_list print(num_list)
-
遍历
定义:将容器内的元素依次取出,并处理的操作。while遍历
index = 0 # index记录num_list的下标 while index < len(num_list) : print(num_list[index], end=' ') index += 1 print()
for遍历
for i in num_list : # 将num_list中的元素依次存入临时变量i print(i, end=' ')
注:while可自定义循环条件,for不行,for只能从容器依次取出元素。
3. 元组tuple
-
元组和列表区别:元组内数据不能更改,列表数据可以。
-
定义
("abc", 8, True)
-
注意:元组只有一个数据时,该数据后面需加“,”。
t2 = (1, ) # 单个数据元组
-
方法
按下标查值
print(t1[1]) # 与列表相似,用下标索引
按值查下标
print(t1.index(8))
统计某个元素出现次数
print(t3.count(5))
统计元组长度(元素个数)
print(len(t1))
修改
t4[0] = 5 # 无法直接修改元组内的数据,会报错 t4[2][1] = 1 # 可修改元组内的列表数据 t4[2] = [1] # 不能替换元组内的列表,会报错 print(t4)
遍历:与列表一致。
4. 字符串str
-
定义:即C和C++中的字符数组,区别是Python中的字符串无法修改。
-
方法
按下标查值
print(name[1]) print(name[-2])
按值查下标
print(name.index('n')) # 从name中查找‘n’的下标 print(name.index(new_name)) # 从name中查找new_name的下标
替换
name1 = name.replace("a", new_name1) # 将name中的‘n’替换成new_name在赋值给name1,name自身的值未发生改变 print(name) # 原字符串并未改变 print(name1)
分割
name_list = my_name.split(" ") print(name_list) print(type(name_list))
规整
my_str = " abc w 312 " my_str1 = "12 abc w 321" print(my_str.strip()) # 去除前后空格 print(my_str1.strip("12")) # 按照单个字符,排除最后出现的‘1’和‘2’
统计字符串出现次数
print(name.count("an"))
统计长度(字符个数)
print(len(name))
5. 序列
-
定义:内容连续、有序,支持重复元素,可使用下标索引的数据容器。列表、元组、字符串,均可视为序列。
-
方法
切片
my_list = [1, 2, 3, 4, 5] my_tuple = (1, 2, 3, 4, 5) my_str = "12345" new_list = my_list[:] # 从头到尾 new_list1 = my_list[1:4] # 下标从1到4的列表 new_list2 = my_list[3:1:-1] # 下标从3到1且倒序的列表 new_tuple = my_tuple[::2] # 下标从头到最后且步长为2的元组 new_tuple1 = my_tuple[::-1] # 下标从头(最后)到最后(首)且倒序的元组 new_str = my_str[1:4:2] # 下标从1到4且步长为2的字符串 new_str1 = my_str[:1:-2] # 下标从头(最后)到1且步长为-2(倒序步长为2)的字符串 print(new_list) print(new_list1) print(new_list2) print(new_tuple) print(new_tuple1) print(new_str) print(new_str1)
6. 集合set
- 定义:与列表、元组、字符串不同,集合是不重复且无序的。
- 方法
7. 字典、映射dict
-
定义:通过映射检索关键字的值;格式为key:value,各种key检索value。关键字不可重复,不支持下标索引。支持for循环,不支持while循环。
-
方法
内容获取
8. 非序列
- 定义:内容无序,不可重复,不可使用下标索引的数据容器。集合、字典,均可视为非序列。
9. 总结
-
列表:一批数据,可修改、可重复的存储场景,用“ [] ”定义
-
元组:一批数据,不可修改、可重复的存储场景,用“ () ”定义
-
字符串:一串字符串的存储场景,用“ "" ”定义
-
集合:一批数据,去重存储场景,用“ {} ”定义
-
字典:一批数据,可用Key检索Value的存储场景,用“ {key:value,...,key:value} ”定义
-
容器通用功能
-
字符串比较
ASCII码表: