PYTHON数据容器

PYTHON数据容器

  • 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以使任意类型的数据
  • 数据容器根据特点的不同,分为五类: 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

list(列表)

特点

  • 可以同时容纳不同类型的元素有序存储,允许重复数据存在,可以修改

基本语法

  • 变量名称 = [元素1,元素2,元素3,元素4,元素5...]

  • 定义空列表:

    • 变量名称 = []
    • 变量名称 = list()
  • 元素的数据类型没有任何限制,列表也可以是元素,这样就定义了嵌套列表

a = ['A',213,'C',[1,2,3]]
for x in a:
    print(x)
    if type(x) is list:
        for y in x :
             print(y)

下标索引

  • 最后一个元素的下标可以为-1,往前则继续-1
a = ['A',213,'C',[1,2,3]]
# 正序
for x in range(0, len(a)):
    print(a[x])
# 逆序
for x in range(0, len(a)):
    print(a[-x-1])
# 嵌套
for x in range(0, len(a)):
    print(a[x])
    if type(a[x]) is list:
        for y in range(0,len(a[x])):
            print(a[x][y])

相关操作

方法 作用
list.index(元素) 查询下标索引
list[x] = 值 修改特定位置的值
list.insert(下标,元素) 插入元素
list.append(元素) 追加元素
list.extend(其他数据容器) 将其他数据容器中的元素依次追加
del list[下标] 删除元素
list.pop(下标) 取出下标对应元素,有返回值
list.remove(元素) 删除某元素在列表中的第一个匹配项
list.clear() 清空列表
list.count(元素) 统计某元素在列表中的数量
len(list) 统计列表内有多少元素

遍历

a = [21,25,21,23,22,20]
b = 0

while(b<len(a)):
    print(a[b])
    b+=1
    
for x in a:
    print(x)

tuple(元组)

特点

  • 可以同时容纳不同类型的元素,有序存储,允许重复数据存在,不可修改

基本语法

  • 变量名称 = (元素1,元素2,元素3,元素4,元素5...)
  • 定义空元组:
    • 变量名称 = ()
    • 变量名称 = tuple()

相关操作

方法 作用
tuple.index(元素) 查找某元素第一次找到时的下标
tuple.count(元素) 统计某个元素在当前元组中出现的次数
len(tuple) 统计元组内的元素个数
  • 注意事项: 可以修改元组内的list的内部元素

str(字符串)

  • 字符串不能修改

相关操作

方法 作用
str.index(参数) 在字符串中查找参数,返回起始参数位置
str.replace(字符串1,字符串2) 将字符串中的字符串1替换为字符串2返回(不是修改字符串本身,而是得到新字符串)
str.split(分隔符字符串) 按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
str.strip()/str.strip(参数) 去掉字符串前后的空格;有参数则去掉字符串前后的参数内容
str.count(参数) 返回参数在字符串中出现的次数
len(str) 返回字符串长度

序列的切片操作

  • 序列: 是指内容连续、有序,可使用下标索引的一类数据容器
  • 列表、元组、字符串,均可以视为序列
  • 切片: 从一个序列中取出一个子序列

语法

  • 序列[起始下标:结束下标:步长]
  • 注意事项:
    • 取头不取尾
    • 起始下标留空表示从头开始
    • 结束下标留空表示截取到结尾
    • 步长为负表示反向取(起始下标和结束下标也要反向标记)

set(集合)

特点

  • 列表可修改、不允许数据重复、内容无序
  • 因为集合是无序的,所以集合不支持下标索引访问

基本语法

  • 变量名称 =
  • 定义空集合:
    • 变量名称 = set()

相关操作

方法 作用
set.add(元素) 添加元素
set.remove(元素) 移除元素
set.pop() 随机取出一个元素
set.clear() 清空集合
set1.difference(set2) 返回2个集合的差集(集合1有而集合2没有的)
set1.difference_update(set2) 消除2个集合的差集(在集合1中删除和集合2相同的元素)
set1.union(set2) 将2个集合合并为1个,产生新集合
len(set) 返回集合元素个数

遍历

  • 因为集合不支持下标索引,所以不能使用while循环遍历

dict(字典、映射)

  • 通过key,获取value

特点

  • 可以同时容纳不同类型的元素,key不允许重复,不可用下标索引,可以修改

基本语法

  • 变量名称 =
  • 定义空字典:
    • 变量名称 = {}
    • 变量名称 = dict()

字典的嵌套

  • 字典的key和value可以使任意数据类型(key不可为字典)
a={
    "王力宏":{
        "语文":99,
        "数学":98,
        "英语":97,
    },
    "林俊杰":{
        "语文":87,
        "数学":86,
        "英语":85,
    },
    "周杰伦":{
        "语文":73,
        "数学":72,
        "英语":71,
    }
}
print(a["王力宏"]["语文"])

相关操作

方法 作用
dict[key]=value key不存在,则新增元素;key存在,更新元素
dict.pop(key) 获得指定key的value,在dict中删除该key
dict.clear() 清空元素
dict.keys() 得到字典中的全部key
len(dict) 获取字段中的元素数量

遍历字典

a={
    "王力宏":{
        "语文":99,
        "数学":98,
        "英语":97,
    },
    "林俊杰":{
        "语文":87,
        "数学":86,
        "英语":85,
    },
    "周杰伦":{
        "语文":73,
        "数学":72,
        "英语":71,
    }
}
# x是key
for x in a:
    print(x,a[x])
# 练习
# 通过for循环对所有级别为1级的员工,级别上升1级,薪水增加1000元
a={
    "王力宏":{
        "部门":"科技",
        "工资":3000,
        "级别":1
    },
    "周杰伦":{
        "部门":"市场部",
        "工资":5000,
        "级别":2
    },
    "林俊杰":{
        "部门":"市场",
        "工资":7000,
        "级别":3
    },
    "张学友":{
        "部门":"科技",
        "工资":4000,
        "级别":1
    },
    "刘德华":{
        "部门":"市场",
        "工资":6000,
        "级别":2
    }
}
print(a)
for x in a:
    if(a[x]["级别"]==1):
        a[x]["级别"] += 1
        a[x]["工资"] += 1000
print(a)

总结

列表list 元组tuple 字符串str 集合set 字典dict
元素类型 任意 任意 字符 任意 任意(key的类型不能为字典)
下标索引 支持 支持 支持 不支持 不支持
重复元素 支持 支持 支持 不支持 不支持
是否可改 是 否 否 是 是
是否有序 是 是 是 否 否

通用操作

方法 作用
len(容器) 统计容器的元素个数
max(容器) 统计容器的最大元素
min(容器) 统计容器的最小元素
目标容器类型(容器) 转换容器
sorted(容器,[reverse=True]) (reverse默认为False,逆序则设为True) 排序,返回列表对象
posted @ 2023-02-09 17:12  Learn1ng  阅读(180)  评论(0)    收藏  举报