首页 > 编程语言 >PYTHON数据容器

PYTHON数据容器

时间:2023-02-09 17:22:44浏览次数:44  
标签:容器 下标 PYTHON 元素 list key 字符串 数据

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) 排序,返回列表对象

标签:容器,下标,PYTHON,元素,list,key,字符串,数据
From: https://www.cnblogs.com/Learn1ng/p/17106337.html

相关文章

  • JDBC和数据库连接池
    JDBC一、概述JDBC(为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。Java程序员使用JDBC,可以连接任何提供了JDBC(驱动程序的数据库系统,从而完成对......
  • RocketMQ 集成生态再升级:轻松构建云上数据管道
    作者:昶风阿里云消息队列RocketMQ版是阿里云基于ApacheRocketMQ构建的低延迟、高并发、高可用、高可靠的分布式“消息、事件、流”统一处理平台,面向互联网分布式应用......
  • 淘宝数据库,主键如何设计以及自增ID的问题
    十三、淘宝数据库,主键如何设计的?聊一个实际问题:淘宝的数据库,主键是如何设计的?某些错的离谱的答案还在网上年复一年的流传着,甚至还成为了所谓的MySQL军规。其中,一个最明......
  • react 根据json分类显示数据 (react哲学示例部分)
    形如constPRODUCTS=[ {category:'SportingGoods',price:'$49.99',stocked:true,name:'Football'}, {category:'SportingGoods',price:'$9.99',sto......
  • python3中,//、/ 的区别
    //:地板除,返回整数结果/:浮点数除法,返回浮点结果例:print(3//2)  #输出1print(3/2)  #输出1.5拓展:判断水仙花数# 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位......
  • python3中,isinstance() 函数
    #isinstance()函数来判断一个对象是否是一个已知的类型,类似type()。#返回值:如果对象的类型与参数二的类型相同则返回True,否则返回False 使用isinstance函数的实例:a=2prin......
  • 分类数据展示功能
    类别id传递点击了不同的分类后将来看到的旅游线路不一样的。通过分析数据库表结构,发现旅游线路表和分类表是一个多对一的关系CategoryServiceImpl实现类:publicclas......
  • vue中静态数据怎么分页(以el-table为例子)
    背景:从别处选择一些数据在界面上用列表展示,列表为静态数据,故需要做分页处理。解决方案:Array.prototype.slice()截取数据,slice(begin,end),从begin开始到end结束,不包括end,返......
  • STL-map/multimap容器
    简介:map中所有元素都是pairpair第一个元素为key键值,起到索引作用,第二个元素为value实质所有元素都会按照key键值自动排序本质:map/multimap属于关联式容器,底层结构使用二叉树......
  • 数据库触发器模板
    1//schema扩展相关文档请参阅:https://uniapp.dcloud.net.cn/uniCloud/jql-schema-ext.html2module.exports={3trigger:{4//写入JQL数据库的标......