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

Python数据容器

时间:2024-04-22 16:23:28浏览次数:26  
标签:容器 下标 name Python list 列表 num print 数据

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)
    
    注:Python中的字符串替换并不是在原来字符串中进行,而是创建了一个新的字符串,原字符串并未改变。
    分割
    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码表:

标签:容器,下标,name,Python,list,列表,num,print,数据
From: https://www.cnblogs.com/submission/p/18138601

相关文章

  • 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(三)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。前面两篇请通过这里查看:深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)深度解读《深度探索C++对象模型》之数据成员的......
  • 接口自动化Python+requests踩坑记录
    问题描述同一个接口,传参相同,用postman,jmeter等接口工具都能正常访问,后台也能正常返回数据,但是用requests.post()调用就会返回400jmeter传参以及响应这是一个登录接口,如图所示的传参,是可以正常登录的  postman传参以及响应可以看到,两个工具的传参不一样,但是也是同样可以正......
  • mysql 清除重复数据
    python代码defclean_table(db:Session):select_sql=('SELECTMIN(id)asid,col1,col2,COUNT(*)FROMtable''GROUPBYcol1,col2''HAVINGCOUNT(*)>1LIMIT200')whileTrue:......
  • 【pytorch学习】之数据操作
    1数据操作为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍n维数组,也称为张量(tensor)。使用过Python中NumPy计算包的读者......
  • deque容器
    deque和vector的最大差异一在于deque允许常数时间内对头端或尾端进行元素的插入或移除操作。二在于deque没有所谓的容量概念,因为它是动态地以分段连续空间组合而成随时可以增加一块新的空间并拼接起来。虽然deque也提供随机访问的迭代器,但它的迭代器和vector、list容器的......
  • WPF/C#:如何显示具有层级关系的数据
    前言比方说我们有以下两个类:publicclassClass{publicstring?Name{get;set;}publicList<Student>?Students{get;set;}}publicclassStudent{publicstring?Name{get;set;}}一个表示班级,一个表示学生,一个班级包含多个学生。......
  • mysql添加数据报错
    1452-Cannotaddorupdateachildrow:aforeignkeyconstraintfails('db_student_manager_web'.'s_student',CONSTRAINT'student_clazz_id_foreign'FOREIGNKEY('clazz_id)REFERENCES's_clazz'('id')......
  • ArcPy自动绘制大量地图并设置地图要素:Python
      本文介绍基于Python语言中ArcPy模块,实现ArcMap自动批量出图,并对地图要素进行自定义批量设置的方法。1任务需求  首先,我们来明确一下本文所需实现的需求。  现有通过Python基于Excel数据加以反距离加权空间插值并掩膜图层所绘制的北京市在2019年05月18日00时至23时(其中......
  • 时序数据库IoTDB的安装与使用
    ApacheIoTDB(物联网数据库)是一体化收集、存储、管理与分析物联网时序数据的软件系统。ApacheIoTDB采用轻量式架构,具有高性能和丰富的功能,并与ApacheHadoop、Spark和Flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。装环境安装......
  • 保障跨域数据交换安全可控,跨域数据管控方案了解一下!
    跨域数据管控是指当数据从一个安全域(通常由单一组织控制)传输到另一个安全域时,对数据的流动和使用进行管理和控制的过程。这通常涉及到确保数据的安全性、合规性以及完整性,同时允许在不同组织或地理位置间进行有效的数据交换。跨域数据管控需要围绕三个风险展开:数据泄露风险、数......