Python 程序设计——day8——容器类型数据

本文详细介绍了Python中的四种容器类型:列表、元组、集合和字典的常见操作,包括查找、增加、删除和修改数据。列举了各种操作的适用场景和具体方法,例如列表的append、extend、insert,元组的查找,集合的add、update,以及字典的get、keys、values、items等。同时,还涵盖了数据的循环遍历技巧。
摘要由CSDN通过智能技术生成

本篇文章主要包括以下知识点:

  1. 列表应用场景,格式,操作(增删改查)
  2. 元组的应用场景,操作(查)
  3. 集合的应用场景,特点及操作(增删)
  4. 字典的应用场景,操作(增删改查)
  5. 序列的循环遍历

目录

一、列表的常用操作

1、查找数据

2、增加数据

3、删除数据

4、修改数据

二、元组的常用操作

1、查找数据

三、集合的常用操作

1、增加数据

2、删除数据

四、字典的常规操作

1、查找数据

2、增加数据

3、修改数据

4、删除数据

五、序列的循环遍历


一、列表的常用操作

        可以将列表想象为一个有顺序的容器,其作用是可以定义一个空的列表,或者用一个列表⼀次性存储多个数据,且可以为不同的数据类型 ​​​​​​,程序员可以对这些数据进⾏的操作有:增、删、改、查

应用场景:

        一个班级有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', '男')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值