本篇文章主要包括以下知识点:
- 列表应用场景,格式,操作(增删改查)
- 元组的应用场景,操作(查)
- 集合的应用场景,特点及操作(增删)
- 字典的应用场景,操作(增删改查)
- 序列的循环遍历
目录
一、列表的常用操作
可以将列表想象为一个有顺序的容器,其作用是可以定义一个空的列表,或者用一个列表⼀次性存储多个数据,且可以为不同的数据类型 ,程序员可以对这些数据进⾏的操作有:增、删、改、查
应用场景:
一个班级有35个学生,需要将每个人的个人信息存储到变量,并不需要声明35个变量,创建一个列表即可。列表可以一次性存储多个不同类型的数据
列表格式:
list1 = [1,2,'A','B','张三','李四',['王五','赵六'],{'name':'秦始皇','action':'打钱'}]
print(list1)
# 运行结果:[1,2,'A','B','张三','李四',['王五','赵六'],{'name':'秦始皇','action':'打钱'}]
1、查找数据
- 根据下标索引查找
li1 = [100,3.1415926,'张三',['李四','王五']]
print(li1[0]) # 100
print(li1[1]) # 3.1415926
print(li1[2]) # 张三
print(li1[3]) # ['李四', '王五']
print(li1[3][1]) # 王五
注意:查找列表中的列表需要用到两个下标
- 根据数据(元素)内容查找
li1 = [100,3.1415926,'张三',['李四','王五']]
if "张三" in li1:
print("张三在里面")
else:
print("张三不在里面")
# 运行结果:张三在里面
- index( )函数:返回指定数据(元素)所在位置的下标
li1 = [100,3.1415926,'张三',['李四','王五']]
value = li1.index(3.1415926)
print(value)
# 运行结果:1
- count( )函数:统计指定数据在当前列表中出现的次数
li1 = [100,3.1415926,'张三',['李四','王五'],100,100]
num = li1.count(100)
print(num)
# 运行结果:3
- len( )函数:访问列表长度,即统计列表中数据(元素)的个数
li1 = [100,3.1415926,'张三',['李四','王五']]
num = len(li1)
print(num)
# 运行结果:4
- in与not in函数:通常与 if 函数一起来判断某个数据是否在列表当中
li1 = [100,3.1415926,'张三',['李四','王五']]
if '王五' in li1:
print('王五在里面')
else:
print('王五不在里面')
# 运行结果:王五不在里面。
# 因为母列表中子列表的元素单独是查找不出来的
if '王五' in li1[3]:
print('王五在里面')
else:
print('王五不在里面')
# 运行结果:王五在里面
2、增加数据
- append( )函数:在列表结尾追加数据
li1 = ['张三','李四','王五']
li1.append('赵六')
li1.append('二蛋')
print(li1)
# 运行结果:['张三', '李四', '王五', '赵六', '二蛋']
注意:如果append()追加的数据是⼀个序列,则追加整个序列到列表
li2 = [1,2,3]
li3 = [4,5,6]
li2.append(li3)
print(li2)
# 运行结果:[1, 2, 3, [4, 5, 6]]
- extend( )函数:列表结尾追加数据,如果数据是⼀个序列,则将这个序列的数据逐一添加到列表
li2 = [1,2,3]
li3 = ['张三',4,5,6]
str1 = '李四'
li2.extend(li3)
li2.extend(str1)
print(li2)
# 运行结果:[1, 2, 3, '张三', 4, 5, 6, '李', '四']
- insert( )函数:指定下标元素前插入数据
li1 = [100,3.1415926,'张三',['李四','王五']]
li1.insert(2,'赵六')
print(li1)
# 运行结果:[100, 3.1415926, '赵六', '张三', ['李四', '王五']]
3、删除数据
- del 列表:默认删除整个列表
list1 = ['张三', '李四', '王五','赵六']
del list1
print(type(list1))
print(list1)
# 运行结果:报错,删除列表后系统显示list1未定义
注意:如果列表后面跟了索引,则删除指定索引数据,如 del list[2] 删除索引为2的元素
list1 = ['张三', '李四', '王五','赵六']
del list1[2]
print(list1)
# 运行结果:['张三', '李四', '赵六']
- pop( )函数:删除指定下标的数据(默认为最后⼀个)
li1 = [100,3.1415926,'张三',['李四','王五']]
value = li1.pop()
print(li1)
value = li1.pop(2)
print(li1)
# 运行结果: [100, 3.1415926, '张三']
# [100, 3.1415926]
- remove( )函数:移除列表中某个数据的第一个匹配项
li1 = [100,3.1415926,'张三',['李四','王五'],'张三']
li1.remove('张三')
print(li1)
# 运行结果:[100, 3.1415926, ['李四', '王五'], '张三']
- clear( )函数:清空列表中的数据,但列表保留
li1 = ['张三', '李四', '王五','赵六']
li1.clear()
print(type(li1))
print(li1)
# 运行结果:<class 'list'>
# []
4、修改数据
- 根据下标直接修改
li1 = [100,3.1415926,'张三',['李四','王五']]
print(li1[3][1]) # 查找元素'王五'
li1[3][1] = '赵六' # 修改元素'王五'为'赵六'
print(li1)
# 运行结果:王五
# [100, 3.1415926, '张三', ['李四', '赵六']]
- reverse( )函数:逆置
list1 = [1, 2, 3, 4, 5]
list1.reverse()
print(list1)
# 运行结果:[5, 4, 3, 2, 1]
- sort( )函数:排序 reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)
# 列表序列.sort(reverse=False)
li = [2,3,5,6,1,4,7]
li.sort(reverse=False)
print(li)
# 运行结果:[1, 2, 3, 4, 5, 6, 7]
li.sort(reverse=True)
print(li)
# 运行结果:[7, 6, 5, 4, 3, 2, 1]
二、元组的常用操作
元组数据不支持修改,只支持查找
1、查找数据
- index( )函数:返回指定数据所在位置的下标,语法和列表、字符串的 index( )方法相同
tu1 = ('aa', 'bb', 'cc', 'bb')
print(tu1.index('cc'))
# 运行结果:2
- count( )函数:统计指定数据在当前列表中出现的次数,语法和列表、字符串的 count( )方法相同
tu1 = ('aa', 'bb', 'cc', 'bb')
print(tu1.count('cc'))
# 运行结果:1
- len( )函数:访问列表长度,即列表中数据的个数,语法和列表的 len( )方法相同
tu1 = ('aa', 'bb', 'cc', 'bb')
print(len(tu1))
# 运行结果:4
三、集合的常用操作
创建集合使用 { } 或 set( ) , 但是如果要创建空集合只能使用 set( ) ,因为 { } 默认用来创建空字典
s1 = set()
print(type(s1)) # 运行结果:<class 'set'>
s2 = {}
print(type(s2)) # 运行结果:<class 'dict'>
注意:① 集合可以去掉重复数据;② 集合数据是无序的,故不支持下标索引;③ 由于数据无序,故只能对其进行增加与删除操作
1、增加数据
- add( )函数:单独添加一个元素
name_set = {"张三", "李四", "王五",'张三', "赵六"}
name_set.add("三炮")
print(name_set)
# 运行结果:{'张三', '李四', '王五', '赵六', '三炮'}
# 自动去除重复数据'张三'
- update( )函数:追加的数据必须是序列
set1 = {10, 20}
set1.update([100, 200])
set1.update('abc')
# set1.update(100) # 报错,只能添加序列,数字不可以
# 运行结果:{100, 200, 10, 'c', 20, 'a', 'b'}
# 因为是集合,所以每次打印的结果可能都不一样
2、删除数据
- remove( )函数:删除集合中的指定数据,如果数据不存在则报错
set1 = {10, 20}
set1.remove(10)
# set1.remove('abc') # 报错
print(set1)
# 运行结果:{20}
- discard( )函数:删除集合中的指定数据,如果数据不存在也不会报错
set1 = {10, 20}
set1.discard(10)
set1.discard('abc')
print(set1)
# 运行结果:{20}
-
pop( )函数:随机删除一个数据
s1 = {10, 20, 30, 40, 50}
s2 = s1.pop()
print(s2)
print(s1)
# 运行结果: 50
# 结果是随机的 {20,40,10,30}
四、字典的常规操作
字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,也不支持下标检索,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可
用法:
- 符号为大括号
- 数据为键值对形式出现
- 各个键值对之间用逗号隔开
# 简单定义一个字典
dic = {"name": "张三", "age": 18, "gender": "男"}
注意:字典的键不能重复,值可以重复键,重复的话查找对应的值只会显示后面出现的,因为前面的值会被覆盖掉
1、查找数据
- 根据键查找值
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1['name']) # 运行结果:张三
print(dict1['height']) # 运行结果:报错
- get( )函数:如果键存在,返回所对应的值,如果不存在,则返回None
# 用法:字典序列.get(key, 默认值)
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.get('name')) # 运行结果:张三
print(dict1.get('height')) # 运行结果:None
print(dict1.get('height', 175)) # 运行结果:175
- keys( )函数:查找所有的键
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.keys())
# 运行结果:dict_keys(['name', 'age', 'gender'])
- values( )函数:查找所有的值
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.values())
# 运行结果:dict_values(['张三', 18, '男'])
- items( )函数:查找键和值,返回元组
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
print(dict1.items())
# 运行结果:dict_items([('name', '张三'), ('age', 18), ('gender', '男')])
2、增加数据
- 语法:字典序列 [key] = 值
- 注意:如果 key 存在则修改这个 key 对应的值;如果 key 不存在则新增此键值对
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
dict1['name'] = '李四'
print(dict1)
# 运行结果:{'name': '李四', 'age': 18, 'gender': '男'}
dict1['height'] = 175
print(dict1)
# 运行结果:{'name': '李四', 'age': 18, 'gender': '男', 'height': 175}
3、修改数据
-
语法:字典序列 [key] = 值
-
注意:如果 key 存在则修改这个 key 对应的值 ;如果 key 不存在则新增此键值对
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
dict1['name'] = '李四'
print(dict1)
# 运行结果:{'name': '李四', 'age': 18, 'gender': '男'}
4、删除数据
- del 函数:删除字典或删除字典中指定键值对,删除字典操作不可逆
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
del dict1['gender']
print(dict1)
# 运行结果:{'name': '张三', 'age': 18}
del dict1
print(dict1)
# 运行结果:报错;报错内容: name 'dict1' is not defined
- clear( )函数:清空字典内容,字典本身还在
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
dict1.clear()
print(dict1)
# 运行结果:{}
五、数据的循环遍历
- 列表与元组都是可迭代的、元素有序的容器类型数据,也叫做序列
- 集合是一种可迭代的、无序的、不能包含重复元素的容器类型的数据
- 列表、元组和集合的遍历方法一致,都会依次取出数据当中的每一个元素
name_list = ['张三', '李四', '王五', '赵六']
for data1 in name_list:
print(data1,end=' ') # 不换行打印
print() # 循环完成后换行
# 运行结果:张三 李四 王五 赵六
name_tuple = ('张三', '李四', '王五', '赵六')
for data2 in name_tuple:
print(data2,end=' ')
print()
# 运行结果:张三 李四 王五 赵六
name_set = {'张三', '李四', '王五', '赵六'}
for data3 in name_set:
print(data3,end=' ')
# 运行结果:张三 王五 李四 赵六
- 遍历字典的健:key( )
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
for key in dict1.keys():
print(key)
# 运行结果: name
# age
# gender
- 遍历字典的值:value( )
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
for value in dict1.values():
print(value)
# 运行结果: 张三
# 18
# 男
- 遍历字典所有的元素(一个键值对转变为一个元组):items( )
dict1 = {'name': '张三', 'age': 18, 'gender': '男'}
for yuansu in dict1.items():
print(yuansu)
# 运行结果:('name', '张三')
# ('age', 18)
# ('gender', '男')