Python中关于列表的知识补充(2)

本文主要介绍Python列表的元素增删操作。包括append()方法在列表末尾添加元素,extend()方法用于合并两个列表,insert()通过索引插入元素,以及切片操作。同时强调了列表中元素的id特性及其对操作的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言:今天我们主要是对列表剩下的知识做一个归纳和总结,话不多说我们直奔主题。

正文:列表元素的增删操作。

我们前面说过要完整的了解列表的构成,就要从四个方面下手:列表的创建;列表元素的获取;列表的填充和对列表元素的判断 前面我们讲到了列表的创建和多个列表元素的获取,现在我们就来讲解如何对于一个已经创建好的列表中的元素进行修改或者删除。而在这之前我们要再复习一下:列表的构成,我们曾说Python的列表和C语言的数组差不多,那么就可以类比于数组进行理解,注意这里是理解而不是生搬硬套。而与数组不同的点在于,列表中其实是存储了多个变量的id,其本身是不会存储任何值的,这点和数组是大相径庭的。而这里的id,就相当于是变量的“身份证”,他们被系统编号,然后放在编号指定的位置,而我们只要知道一个在列表中元素的id,那么我们就可以直接对其进行操作,但这并不会改变id,所以这些操作都不会改变原来的列表的id,改变后的列表任然是原列表。

1、元素的增添操作:

向列表末尾添加一个元素具体操作 lst.append(要添加的元素)
在列表末尾至少添加一个元素具体操作 lst,extend(要添加的元素或者列表名)
在列表任意位置添加一个元素lst,insert(1,00)
在任意位置添加多个元素lst[开头:结尾]=lst0||要添加的元素或者列表名 (注意:切片指的是将开始到结尾的数全部删除,再接上我们要的元素,所以会打印出这种结果)

那我们再来看看运用到这几种方法的例题

#例一
lst=[10,20,30,40,50,60,70,80]
print('添加元素前:',lst,id(lst))
lst.append(100)
print('例一添加元素后:',lst,id(lst))

'''通过比较判断添加后的列表的id是不是一致
从而得出append的操作结果是否会改变原列表的地址
(是否是产生新列表而不是在原列表上修改)'''
#例二
lst=[10,20,30,40,50,60,70,80]
print('添加元素前:',lst,id(lst))
lst0=[90,100,110,'C','Python']

lst.append(lst0)    #写法一
print('例二添加元素后:',lst,id(lst))

lst.extend(lst0)    #写法二
print('例二添加元素后:',lst,id(lst))

'''这里是第二个例子的两种不同写法,
大家可以对照一下,就可以知道append和extend的不同
但是不能同时写下这两句,这样的话就达不到我们想要是想的目的了,
一定要先注释掉一种写法然后在下下另一种写法进行结果的对照'''
#例三
lst.insert(1,'例三')
print('例三添加元素后:',lst,id(lst))

#例四
lst[1:]=lst0
'''(注意:切片指的是将开始到结尾的数全部删除,
再接上我们要的元素,所以会打印出这种结果)'''
print('例四添加元素后:',lst,id(lst))





四个例题的输出,如下图所示:

从例一的结果中可以得到:

append的默认添加位置是列表的末尾,并且不会改变源列表的id

对比例二的两种写法打印出来的结果我们可以得出当中的差别:

例二的第一种写法打印出来的结果是:lst=[10,20,30,40,50,60,70,80,[90,100,110,'C','Python']]

第二种写法打印出来的结果是:lst=[10,20,30,40,50,60,70,80,90,100,110,'C','Python']
可知:append会把lst0中的多个元素当作是一个元素放进lst;而extend的可以增添多个元素到目标列表中,并且可以将需要添加的目标列表中元素分次添加进目标列表。

例三:insert的其实就是我们在之前提到的关于利用列表中存储的是列表元素的id从而,利用索引进行的更改元素的操作,这里我们就要回顾到浅析C语言和Python(5)的课程中,最后一点我们讲到的index函数的用法,配合上查找元素索引的函数index我们可以很轻松的知道列表中每一个元素的索引,从而对列表进行操作

例四:其实就是我们并不陌生的切片操作,但是这里的切片操作并不会改变列表的id,大家可以看截图结果进行观察。

2、元素的删减操作:

remove()1、一次删除一个元素
2、重复元素只会删除第一个
3、元素不存在会抛出异常:ValueError
pop()1、删除一个指定索引位置上的元素
2、指定索引不存在抛出IndexError
3、不指定索引时,默认删除列表中最后一个元素
new_lst=lst[切片开头:切片结尾](切片操作)一次至少删除一个元素
chear()清空列表
del删除列表
#例一
lst0=[10,20,30,40,50,30,10]
print('删除元素前:',lst0,id(lst0))

lst0.remove(30)
print('删除元素后:',lst0,id(lst0))
'''删除元素后,
与删除前的id进行对比'''

lst0.remove(100)       
'''但是对于这里而言,报错的话后面就不能够正常进行,
若要继续向后写,必须先注释掉'''
print('删除元素后:',lst0,id(lst0))
'''删除列表中没有的元素
正确输出:报错'''

lst0.remove(10)
print('删除元素后:',lst0,id(lst0))
'''删除列表中重复的元素
正确输出:删除最开始的那个元素'''

#例二
print('\t')
lst1=[10,20,30,40,50]
print('删除元素前:',lst1,id(lst1))

lst1.pop(3)
print('删除元素后:',lst1,id(lst1))
lst1.pop(-2)
print('删除元素后:',lst1,id(lst1))
'''这里的pop()括号中的正负之分
关乎于整个列表的正索引和负索引'''

lst2=[10,20,30,40,60]
print('删除元素前:',lst2,id(lst2))

lst2.pop()
print('删除元素后:',lst2,id(lst2))
'''验证pop()不输入括号的默认删除值'''

#例三
print('\t')
'''产生一个新的列表对象的操作'''
lst=[10,20,30,40,50,60,70,80]
new_lst=lst[1:3]
print('删除元素前:',lst,id(lst))
print('删除元素后:',new_lst,id(new_lst))
'''--------------------------------------'''
'''不产生新的列表对象,而是删除对应元素的操作'''
lst[1:3]=[]
'''使用源列表存储进行了切片操作的列表,
故此不改变源列表的id'''
print('删除前和删除后:',lst,id(lst))

 

这里希望大家可以结合之前的添加操作进行理解,故不再做多余的解释说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值