python列表pop
‘壹’ python中pop函数有什么用
方法pop()从列表中删除一个元素(默认为列表的最后一个元素),并返回这一个元素,也就是说,利用pop()将元素从列表中删除后,你能接着使用它的值。删除列表中任意位置的元素时,只需在()中指定要删除元素的索引即可。使用pop()后,被弹出的元素就不在列表中了。
‘贰’ Python 中删除列表元素的三种方法
列表基本上是 Python 中最常用的数据结构之一了,并且删除操作也是经常使用的。
那到底有哪些方法可以删除列表中的元素呢?这篇文章就来总结一下。
一共有三种方法,分别是 remove , pop 和 del ,下面来详细说明。
remove 是从列表中删除指定的元素,参数是 value。
举个例子:
需要注意, remove 方法没有返回值,而且如果删除的元素不在列表中的话,会发生报错。
pop 是删除指定索引位置的元素,参数是 index。如果不指定索引,默认删除列表最后一个元素。
pop 方法是有返回值的,如果删除索引超出列表范围也会报错。
del 一般用在字典比较多,不过也可以用在列表上。
直接传元素值是不行的,会报错:
del 还可以删除整个列表:
以上就是本文的全部内容,如果觉得还不错的话,欢迎 点赞 , 转发 和 关注 ,感谢支持。
推荐阅读:
‘叁’ Python 用pop()删除列表元素时为什么会隔一个元素
不是隔一个元素
是因为你已经删掉前面的一个对应的位置也就变了。
比如a=['妈妈','爸爸','奶奶','爷爷','姐夫','毛珊','毛豆','姐姐','姑姑','姑父',"霖霖']
此时a[2]为'奶奶' ,a[3]为'爷爷'
a.pop(2)
那么a就变成了
['妈妈','爸爸','爷爷','姐夫','毛珊','毛豆','姐姐','姑姑','姑父',"霖霖']
此次a[2]为'爷爷',a[3]为'姐夫'
所以如果你想依次删掉对应的几个比如'奶奶','爷爷','姐夫','毛珊'
你可以从后往前删,这样前面的位置不受影响
a.pop(5)
a.pop(4)
a.pop(3)
a.pop(2)
‘肆’ Python 列表内存浅析
序列是Python中最基本的数据结构。序列是一种数据存储方式,用来存储一系列的数据。
在内存中,序列就是一块用来存放多个值的连续的内存空间。比如一个整数序列[10,20,30,40]
序列中的每个元素都分配一个数字 - 它的位置,或索引。第一个索引是0,第二个索引是1,依此类推。
列表:用于存储任意数目、任意类型的数据集合。
列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式:
其中,10,20,30,40 这些称为:列表a的元素。
列表中的元素可以各不相同,可以是任意类型。比如:a = [10,20,"abc",True,[]]
当列表增加元素时,列表会自动进行内存管理,减少了程序员的负担。但是列表元素大量移动,效率低所以一般建议在尾部添加。
本地电脑运行结果:
列表是可变数据类型,地址不变,值可变。因此,添加新的值之后,地址也是不变的。
解析:在索引2处要引用50这个元素
申请了8个内存空间但是list实际用来存储元素只使用了其中5个内存空间
insert的时间复杂度是O(n)
pop () 方法 删除并返回指定位置的元素,如果未指定位置则默认操作
pop () 方法 删除并返回指定位置的元素,如果未指定位置则默认操作
结果运行:
‘伍’ Python 列表
是不是这个list让你感觉有些困扰呢,你看一下我下面的表示方式:
你的list和我的abc都是表示一个列表名。
del abc[1]:调用系统方法del,删除列表abc中索引为1的项;
abc.pop():调用列表(这里为abc)本身的方法pop(),删除abc列表的最后一项。
abc[1]中用方括号是列表的索引操作,为列表自身的规则;pop()中也可以传入参数用于表示索引位置,但此处为向方法内传入位置参数。
方法来源不一样,使用规则有差别。
‘陆’ python从列表中删除元素
有很多种方法都能实现从列表中删除元素。
方法一:remove(具体的元素),该函数可以删除列表中某个值的第一个匹配项。
方法二:使用pop(元素位置)来删除,pop()还可以接着使用。
方法三:使用del关键字根据索引来删除元素。
‘柒’ 四、 python中的数据类型——列表
列表是一种有序的集合,有点类似c里面的数组。它的特点是,可以随时向里面添加或删除其中的元素,在python中经常用来存放数据。列表的特点是中括号,内部元素用逗号隔开。
在这个列表中,可以放进去任何元素,不论你的元素是字符串、整型、浮点型、还是布尔值、空值,包括列表什么的,都可以放进去。
元素与元素之间,用逗号隔开。
列表会为每个元素分配序号,这个序号代表它的位置,称为索引(index),第一个元素的位置是0,第二个元素是1,以此类推。
使用索引获取列表中的值时,需要使用中括号来访问,在中括号前面加上列表名,中括号内部是元素的索引。
0代表第一个元素的位置,1代表第二个,-1代表倒数第一个,-2代表倒数第二个
使用 len() 函数,可以查看列表里面有多少个元素
在python中,列表的操作是非常的灵活的,我们可以向其中添加或删除元素。
添加使用 list.append() 函数
list.append() 函数是将元素插入到列表的末尾,当我们想在特定位置插入元素时可以使用 list.insert() 函数
list.insert() 函数接受两个参数,第一个参数是插入位置,第二个参数是要插入的元素。
需要注意的是,在使用append和insert时,必须在前面注明要操作的列表。就像上面的例子,我们要操作classmates这个列表,所以必须写成 classmates.append() 或 classmates.insert() ,如果不这么写,计算机就不知道你要往哪个列表中加入元素。
没有特殊情况的话,推荐使用append()函数添加元素,因为使用append的时候,元素默认加在列表尾部,不会造成其他元素索引值的改变。如果使用insert的话,就像上面的insert(1,'Tom'),在位置1插入'Tom'后,Tom后面所有的元素,索引值都加了一个1,列表中元素越多,受影响的程度越大,因此使用append()函数要比insert()函数更快。
删除列表中元素的方法有三种
del后面需要用索引的方式表明要删除的元素,也就是上面的例子,names[1]代表names中的第二个元素,使用del即可删除
list.pop() 函数与del差不多,都是使用索引值进行删除,只不过写法不同。
我们可以发现,执行 names.pop(1) 后,python shell打印出了第二个元素的值,也就是我们要删除的那个值,这是因为 pop() 这个函数,是有返回值的,有时候我们需要使用这个值,这个时候就可以用变量存起来。
这样我们就可以通过调用a而使用刚才删掉的元素了。
list.remove() 函数的作用是删除第一个匹配的元素,上面的例子中,names这个列表里面,有两个'Bob',remove函数只删除了第一个'Bob'。这就是 list.remove() 函数的特点。
有时候我们想使用列表的前10个元素,或者前n个元素,这时候就应该使用列表的切片。
切片和索引类似,都是使用中括号,区别是,索引中的中括号里面只有一个数,而切片不同。切片是切割列表,形成切割下来的部分形成新的列表。
切片: list[start:end:[step=1]] ,这就是切片的表达式,要求start和end两者必须有一个,step不是可以不指定,不指定的时候默认为1。
切片该怎么理解呢,start就是开始的位置,end就是结束的位置。切片有个特点是“取前不取后”,看上面那个例子可以发现,1作为start,3作为end,1代表第二个元素,3代表第四个元素,列表切片的时候,是不取后面的那个数字对应的元素的,也就是不取第四个元素,所以names[1:3]只取了第二个元素和第三个元素,这就是所谓的取前不取后。
再看下一个例子。
当不指定start或者end的时候,start默认为0,end默认为最后一个元素的索引值+1,因为“取前不取后”,要想取到最后一个元素,必须加个1才行。
上例中,用 len(numbers) 表示了最后一个元素的索引值,因为索引值从0开始,最后一个元素的索引值一定是列表内元素个数-1,根据“取前不取后”,在end位置上的数字应该+1,所以最后就等于 len(numbers) 了。
当不设定start和end的时候,就默认取所有的元素了。
当加入step,这个选项后,step代表步长,默认为1,设定成2的时候,就是隔一个取一个,设定成3时就是隔两个取一个。
上例中,第一个切片,start和end均未设定,因此从第一个元素开始,隔一个取一个,得到了所有奇数位置的元素。
第二个切片,start设定为了1,因此取了所有偶数位置的元素。
3在列表中,0不在列表中,所以 3 in a 是True,而 0 in a 是False
更多关于列表的信息可以通过使用 help(list) 查看帮助文档。