当前位置: 首页 > news >正文

python容器之常用操作

以列表list为例,这个list相当于c++中的数组或vector容器。那列表有哪些常用的操作呢?

获取列表的长度

list = [1,2,3,4,5]
//获取列表的长度
length = len(list)

注意这里与c++不同,c++中的容器都是有各自的定义,每种容器类型都实现了自己的获取本容器的长度的方法,这些方法名字一般都是为size(),但是python不一样,对于python中常用的容器他们一般都是利用python提供的内置函数len来获取列表长度的。python中容器一般不是通过size等方法获取容器其元素的个数。(如果是用户自己实现的类,不在讨论的范围之内)

获取列表中某个元素出现的次数

list = [1,2,2,3,4,5]
#统计列表中2出现的次数
number = list.count(2)  

这里获取容器内某个元素出现的次数是通过count方法获取的。count方法是有参数的,参数为元素值。

列表中添加元素

  • 在列表末尾添加一个元素:使用append方法。
  • 两个列表拼接成一个列表:直接相加即可
  • 在列表1中添加一个元素,但是元素是列表2:如果想要将列表2整天加入列表1,使用append方法即可;如果想要将列表2中的内容加入到列表1,而不是将整个列表2作为一个整体加入到列表1,使用extend方法。exntend会把列表打散,将列表中的元素一个一个的加入到列表1汇中;append方法则会将列表2作为一个整体加入到列表1中。
  • 在列表的插入中插入元素的方法:使用insert方法,insert方法要指定索引值和插入值;如果要频繁的在头部插入列表,请使用deque(频繁的在头部插入推荐使用deque)。具体使用方法请看下面的示例。

示例如下:

list = [1,2,3,4,5]

#向列表中添加一个元素,添加到末尾
list.append(6)
print(f'list = {list}')  #输出[1,2,3,4,5,6]

#两个列表相加
list1 = [6,7,8]
list = list + list1;
print(f'list = {list}')  #输出[1,2,3,4,5,6,7,8]

#列表1中使用append方法添加list1
list1 = [6,7,8]
list.append(list1)
print(f'list = {list}')  #输出[1,2,3,4,5,[6,7,8]]

#列表1使用extend方法添加list1
list1 = [6,7,8]
list.extend(list1)
print(f'list = {list}')  #输出[1,2,3,4,5,6,7,8]
from collections import deque

# 创建deque对象
numbers = deque([1, 2, 3])

# 使用appendleft添加元素
numbers.appendleft(0)
print(list(numbers))  # 输出: [0, 1, 2, 3]

# 使用extendleft添加多个元素(注意顺序会反转)
numbers.extendleft([-2, -1])
print(list(numbers))  # 输出: [-1, -2, 0, 1, 2, 3]

删除列表中某个位置的元素

删除列表中的某个元素,有几种情况:

  • 知道具体的值,按值进行删除:使用remove方法
  • 知道要删除的索引位置,按位置进行删除:del
  • 知道要删除的索引位置,不但要删除这个值,还要返回要删除的值:pop方法(最常用的方法之一)
  • 删除列表中所有与某个元素相等的值:使用列表推导式和条件表达式批量删除

请看下面的示例:

#pop方法删除元素,如果没有参数,默认删除最后一个元素
#如果有参数,则该参数代表要删除的索引值
list = [1,2,3,4,5]
item = list.pop()
print(f'item={item}')  #item=5
print(f'list={list}')  #list=[1, 2, 3, 4]
second_item = list.pop(1)  #删除列表中索引值为1的元素
print(f'second_item={second_item}')  #item=2
print(f'list={list}')  #list=[1, 3, 4]


#remove方法按值删除
list = [1,2,3,4,5]
list.remove(1)
print(f'list={list}')  #list=[2, 3, 4, 5]

#安全删除
def safe_remove(list, item):
    try:
        list.remove(item)
        return True
    except ValueError:
        print(f"列表中不存在元素 {item}")
        return False
        
#按索引位置删除
list = [1,2,3,4,5]
del list[3]
print(f'list={list}')  #list=[1, 2, 3, 5]

#批量式删除
list = [1,2,2,2,2,2,3,4,5]
list = [value for value in list if value!=2]  #列表推导式
print(f'list={list}')  #list=list=[1, 3, 4, 5]

获取列表的一部分数据

在python中如果要对指向获取列表的一部分数据,python提供了一种新的形式,即索引和切片,通过这样的方式来获取指定区域的数据。索引值与c++中的一样都是从0开始的,切片需要注意的是左闭右开原则,即包含切片左侧的索引,但是不包括索引右侧的索引。注意切片是可以包含步长的。索引的形式如下:

list左索引值:右索引值]------>左闭右开,即这个切片包括左索引对应的值,但是不包括右索引值

list[:]----->这种表示列表中的所有值

list[:索引值]-------->取这个索引值之前的所有的元素组成的列表

list[索引值:]--------->取从这个元素开始到列表末尾的所有元素

list[索引值:索引值:步长]-------->从左索引值开始到右索引值的前一个元素,每隔步长取元素

list = [1,2,3,4,5,6]
#通过切片的方式获取列表的部分 输出为[2,3,4,5,6]
print(f'list[1:]={list[1:]}') 

#通过切片的方式获取列表的部分 输出为[2,3]
print(f'list[1:]={list[1:3]}') 

#通过切片的方式获取列表的部分 输出为[1,2,3]
print(f'list[1:]={list[:3]}')

#通过切片的方式获取列表的部分 输出为[1,2,3,4,5,6]
print(f'list[1:]={list[:]}')

#通过切片的方式获取列表的部分 输出为[1,3,5]
print(f'list[1:]={list[::2]}')

注意事项

  1. 列表中的元素数据元素可以不相同

相关文章:

  • 为AI聊天工具添加一个知识系统 之127 详细设计之68 编程 核心技术:Cognitive Protocol Language 之1
  • openEuler环境下GlusterFS分布式存储集群部署指南
  • 【FL0086】基于SSM和微信小程序的垃圾分类小程序
  • OpenFeign:服务间通讯携带 Token 的实现
  • 本地大模型搭建与webui交互
  • 我和我的通义灵码
  • LeetCode:131. 分割回文串(DP Java)
  • 8 - PS XADC接口实验
  • Java 大视界 -- Java 大数据机器学习模型的可解释性增强技术与应用(107)
  • nist关于rsa中p,q的要求
  • 【数据挖掘】Pandas
  • 【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)
  • 看得见摸得着的AI:具身智能
  • 【Java】多线程篇
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_fd_info
  • redis slaveof 命令 执行后为什么需要清库重新同步
  • 阿里云oss文件上传springboot若依java
  • 用C语言实现一个链表(四)
  • 深度学习原理与Pytorch实战
  • VS Code 如何搭建CC++开发环境
  • 圣融网站建设/福州搜索排名提升
  • 福州市建设厅网站/北京百度seo公司
  • 个人注册网站怎么注册/域名查询 ip
  • 如何推动一个教学网站的建设/电商运营主要做什么
  • 邳州哪家做百度推广网站/软文写作范例大全
  • 制作企业网站/谷歌推广教程