-
2021-04-27 03:19:32
我知道,如果我只想删除python中list t的第一个元素,我可以用以下方法来完成:
del t[0]
这是最简单的。然而:
t = t[1:]
号
同样有效。在我正在学习的教科书中说,使用后一种方法通常被认为是不好的做法,因为它本身并不删除列表的标题,但是
"slice运算符创建一个新的列表,赋值使t引用它,但没有一个引用它。"对作为参数传递的列表有任何影响。"
为什么这样不好?你能举出一个例子,在这个例子中,这样的方法会显著地改变一个函数吗?事先谢谢。
如果您特别想做的是从列表中删除第一个元素,那么使用不这样做的方法是不好的做法。这并不意味着t = t[1:]总体上是不好的做法。
此外,还可以使用t[:] = t[1:]修改原始列表。
有很多情况下,要么是del t[0]要么是t = t[1:]是罚款的,还有很多情况下,del t[0]是错误的,t = t[1:]是适当的。
您可以使用t.pop(0),这将返回第一个元素的值并将其从列表中删除。
@darvark-op并没有要求其他方法从列表中删除项目,而是询问修改原始列表和创建新列表的用例。
这不是一个好主意有多种原因:
创建一个新列表只需要做一些不必要的工作来创建新列表和取消分配旧列表。在这两个步骤之间,两次使用内存(因为原始列表和新列表同时处于活动状态,就在分配之前)。
如果有其他内容引用同一个列表,则不会更新:u = t; del t[0]同时更改u和t。但u = t; t = t[1:]在保持u不变的情况下将新列表分配给t。
最后,与不透明的t = t[1:]相比,del t[0]更清楚地说明了其去除元素的强度。
我认为t[:] = t[1:]可以用来改变现有的list对象,但它必须做大约两倍于del t[0]的工作,因为del操作只需要将所有后续的list项下移,而t[1:]必须将后续的项复制到新的list,然后将它们复制回原始的list对象。对吗?
考虑具有两个实现的函数:
def remove_first_a(t):
t = t[1:]
def remove_first_b(t):
del t[0]
现在,请参见正在使用的功能:
> l = [1, 2, 3]
> remove_first_a(l)
> l
[1, 2, 3]
> remove_first_b(l)
> l
[2, 3]
号
第一个实现只重新分配局部变量t,它对作为参数传递的对象没有影响。第二个实现实际上改变了该对象。第一个函数在其当前形状中相当无用。你可以改变它:
def remove_first_a(t):
return t[1:]
> l = [1, 2, 3]
> x = remove_first_b(l)
> x
[2, 3]
你想要一个还是另一个,更多地取决于实际的用例。有时,您希望原始的EDOCX1[1]保持不变以供以后使用,有时您希望确保在仍然引用它的所有地方更改原始的。
只是del和slice的一个例子。
In [28]: u = t = [1, 2,3,4]
In [30]: id(u) == id(t) # now the id is same,they point one obj
Out[30]: True
。
如果我们使用del运算符。
In [31]: del t[0]
In [32]: t
Out[32]: [2, 3, 4]
In [33]: u
Out[33]: [2, 3, 4]
但是如果我们使用slice操作符。
In [35]: t = t[1:]
In [36]: t
Out[36]: [2, 3, 4]
In [37]: id(t) == id(u)
Out[37]: False
In [39]: u
Out[39]: [1, 2, 3, 4]
。
我们发现T和U现在指向不同的对象,所以我们处理列表T,列表U不变。
更多相关内容 -
python怎么删除列表的第一个元素?
2021-01-09 11:34:07我们以一个字符串为元素类型的 list 为例,进行列表元素的删除: >>> l = ['no surfing', 'flippers'] 法一:remove(val) >>> l.remove('no surfing') >>> l ['flippers'] (1...我们以一个字符串为元素类型的 list 为例,进行列表元素的删除:
>>> l = ['no surfing', 'flippers']
法一:remove(val)
>>> l.remove('no surfing') >>> l ['flippers']
(1)remove() 的参数是具体的元素值,而不是索引,
(2)如果知道索引,如何使用 remove 删除该索引上的元素值,
>>> l.remove(l[1])
这样做是很大的风险的,因为 list 允许重复,remove() 删除的列表中第一个和参数值相等的元素
法二:pop(0)
(1)pop() 接收的是索引,无参的情况下删除的是最后一个元素(典型的栈的特性)
(2)pop() 存在返回值,返回的是删除的元素值
l.pop() <==> l.pop(-1)
(3)list 的 append()(添加到尾部),pop()(从尾部弹出),成功地将 list 变成了 stack
法三:del(l[0])
>>> del(l[0])
-
Python list列表中删除多个重复元素操作示例
2020-12-31 20:50:36结果为:[9, 5, 6, 6, 7, 8, 9, 6, 0],只删除了第一个为6的元素。 如果采用for循环遍历各元素: for x in l: if x == 6: l.remove(x) 结果为[9, 5, 7, 8, 9, 6, 0],后面的6没有删除。主要因为remove改变了list... -
python列表如何删除第一个和最后一个_Python切片列表中的第一个和最后一个元素...
2020-11-28 11:31:11Is there a way to slice only the first and last item in a list?... If this is my list:>>> some_list['1', 'B', '3', 'D', '5', 'F']I want to do this (obviously [0,-1] is not valid syntax):>>> f...Is there a way to slice only the first and last item in a list?
For example; If this is my list:
>>> some_list
['1', 'B', '3', 'D', '5', 'F']
I want to do this (obviously [0,-1] is not valid syntax):
>>> first_item, last_item = some_list[0,-1]
>>> print first_item
'1'
>>> print last_item
'F'
Some things I have tried:
In [3]: some_list[::-1]
Out[3]: ['F', '5', 'D', '3', 'B', '1']
In [4]: some_list[-1:1:-1]
Out[4]: ['F', '5', 'D', '3']
In [5]: some_list[0:-1:-1]
Out[5]: []
...
解决方案
One way:
some_list[::len(some_list)-1]
A better way (Doesn't use slicing, but is easier to read):
[some_list[0], some_list[-1]]
-
python 删除list中的第一个元素
2021-01-10 08:54:121.默认删除最后一个元素.pop()中也可以传入参数,为list的索引 2.pop() 接收的是索引,无参的情况下删除的是最后一个元素(典型的栈的特性) 3.pop() 存在返回值,返回的是删除的元素值 list=[11,12,13,14,15] ...目录
1.python 删除list中元素三种方式(一般)
1. pop()
1.默认删除最后一个元素.pop()中也可以传入参数,为list的索引
2.pop() 接收的是索引,无参的情况下删除的是最后一个元素(典型的栈的特性)
3.pop() 存在返回值,返回的是删除的元素值list=[11,12,13,14,15]
list=[11,12,13,14,15] list.pop() print(list.pop()) print(list) #output 14 [11, 12, 13]
2.del
list=[11,12,13,14,15] del(list[1]) print(list) #output [11, 13, 14, 15]
3.remove
remove() 的参数是具体的元素值,而不是索引,
list=[11,12,13,14,15] list.remove(11) print(list) #output [12, 13, 14, 15]
2.嵌套数组删除存在的问题
存在于嵌套list中, 如果list1中的一个元素发生改变,list0也会变化.
目的:list0生成后不随list1的改变而改变if(len(first_images)==12): #获取到了1分钟内的12个图像 grey_images.append(to_grey(first_images)) first_images.clear() if(len(grey_images)==5): #获得了5分钟的图片 images.append(grey_images) print("image1前的shape:") arr1 = np.array(images) print(arr1.shape) del(grey_images[0]) print("image1之后的shape:") arr1 = np.array(images) print(arr1.shape)
结果:image1前的shape和image1之后的shape并不一样.删除元素后比之前的少了一个元素.因为list存放的是索引,并不是实际的值
思路:将索引改为实际的值,然后再删除
具体步骤:
1.创建一个新的数组
2.对原数组的元素依次放入新数组中.
3.对原数组进行元素删除.
这样新数组的值并不会发生改变.因为新数组的元素不再是引用,而是实际的值if(len(first_images)==12): #获取到了1分钟内的12个图像 grey_images.append(to_grey(first_images)) first_images.clear() if(len(grey_images)==5): #获得了5分钟的图片 grey_images_val=[] for t in range(5): grey_images_val.append(grey_images[i]) images.append(grey_images_val) print("grey的length:") print(len(grey_images)) print("image1前的shape:") arr1 = np.array(images) print(arr1.shape) grey_images.pop() print("image1之后的shape:") arr1 = np.array(images) print(arr1.shape)
结果:image1前的shape和image1之后的shape此时相同
-
删除python中列表字典中的最后一个元素
2020-11-28 11:31:10在列表字典中删除每个列表的最后一个元素有什么更加pythonic或有效的方法?例如,拿这个:listDict = {'tom': [-2,10,2,-8], 'sam': [-9,-10,-10,-7]}并将其转化为:listDict = {'tom': [-2,10,2], 'sam': [-9,-10,-... -
python 删除list中的第一个元素 坑
2019-12-08 13:01:541.默认删除最后一个元素.pop()中也可以传入参数,为list的索引 2.pop() 接收的是索引,无参的情况下删除的是最后一个元素(典型的栈的特性) 3.pop() 存在返回值,返回的是删除的元素值 list=[1... -
list第一个元素-list删除最后一个元素-list加入倒数第二个元素
2020-12-11 13:39:25如何取得list中最后一个元素使用PYTHON最简单了arr = [1,2,3,4]直接使用arr[-1]就可以得到list最后一个元素怎样获取list集合中的最后一个对象中的值指令:list.get(list.size()-1);C语言中List的含义:链表是一种... -
redis获取列表的第一个和最后一个元素并删除,lpop、rpop
2022-04-07 15:30:33lpop 获取list的第一个元素,并删除 lpop 列表名称 rpop rpop 列表名称 -
python关于删除列表中的元素,并得到一个新列表,不改变原列表
2022-03-18 23:10:39一,问题 问题出现在使用递归的时候, 想要删除列表中某个元素,然后作为参数传入函数,但是又不想改变列表本身 ...新建一个列表,remove后,再传入函数。 多了两行代码,而且多命名一个变量,太别扭了。 2.列表推 -
python实现删除列表中某个元素的3种方法
2020-11-23 17:14:09python实现删除列表中某个元素的3种方法python中关于删除list中的某个元素,一般有三种方法:remove、pop、del:1.remove: 删除单个元素,删除首个符合条件的元素,按值删除举例说明:>>> str=[1,2,3,4,5,2,6]>>> str.... -
如何从 Java 的 List 中删除第一个元素
2022-04-16 21:03:45在这个实例中,我们将会演示如何删除在 Java 中定义的 List 的第 1 个元素。 我们将会针对这个问题使用 List 接口的 2 个实现ArrayList和LinkedList来进行演示。 创建一个 List 首先,我们来创建一个我们需要的... -
python-----删除列表中某个元素的3种方法
2020-11-20 19:10:18python中关于删除list中的某个元素,一般有三种方法:remove、pop、del:1.remove: 删除单个元素,删除首个符合条件的元素,按值删除举例说明:>>> str=[1,2,3,4,5,2,6]>>> str.remove(2)>>> str[1, 3, 4, 5, 2, 6]2.... -
js数组删除第一个元素
2019-01-29 16:50:48js数组删除第一个元素 <script> var a = ["乔布斯", "盖茨", "扎克伯格", "apple", "Ms", "facebook"]; document.write(a + "... -
C# 删除数组第一个元素
2020-12-23 17:17:37删除数组第一个元素 using (var reader = new StreamReader(csvPath, Encoding.Default)) { var fooCsv = new FooCsv(); fooCsv.Tags = reader.ReadLine().Split(',').Where((val, idx) => idx != 0).ToArray()... -
在Python中获取列表的最后一个元素
2021-02-10 01:01:34要获得最后一个元素,而不修改列表,和假设您知道列表中有最后一个元素(即它是非空的)将 -1 传递给下标符号:>>> a_list = ['zero', 'one', 'two', 'three']>>> a_list[-1]'three'解释索引和切片... -
JS如何删除数组第一个元素
2021-06-04 09:52:02return arr.slice(1); } //利用filter function curtail(arr) { return arr.filter(function(v,i) { return i!==0; }); } //利用push.apply+shift function curtail(arr) { var newArr=[]; [].push.apply... -
Python一维二维列表list数组删除最后一个元素、任意指定位置的元素
2021-03-04 10:47:43一维列表 a=[1,2,3,4] a.pop()#删除最后一位 print(a) 输出: [1, 2, 3] 二维列表 a=[[1,2],[2,3],[1,2],[1,2]...那么,如果要删除某一位的元素呢? a=[1,2,3,4] del a[-2]#删除倒数第二位 print(a) 输出: [1, 2, 4 -
从另一个列表中删除一个列表中出现的所有元素
2020-06-29 09:47:31Let's say I have two lists, l1 and l2 . 假设我有两个列表l1和l2 。 I want to perform l1 - l2 , which returns a -
vecter容器删除第一个元素
2019-05-08 20:16:53如何删除vecter容器中第一个元素: #include <iostream> #include <vector> using namespace std; int main() { vector<int> v; //初始化 v for (int i = 0; i < 10; i++) { v.push_... -
Python | 列表如何去掉最后一个元素
2021-09-16 19:42:27在Python3中列表数据类型的内置方法里有三种方法可以删除列表的最后一个元素: 1、pop方法 list = [1,2,3,4] list.pop() print(list) 结果:[1, 2, 3] 2、del方法 list = [1,2,3,4] del(list[-1]) ... -
如何快速删除list中的最后一个元素?
2021-03-13 13:44:05(前言: 在项目中,在统计在线用户量及其行为方式的时候,想在项目如“/bob/recode/online”,结果发现...即:”/bob/report/online“.)再回到题目上来,删除list中的最后一个元素,看下面:可以使用lists:sublist(L,... -
python中一个列表中的元素依次向前移一位,第一个元素移动至最后一个元素的位置
2019-12-10 17:19:181.题目: 2.代码: 3.结果: -
Python3---对列表删除的三种方式 & 列表的正序遍历与倒序遍历 & 删除多个相同元素
2022-03-25 15:34:371.Python3中对列表删除的三种方式 2.列表的正序遍历与倒序遍历过程的分析 3.删除列表中多个相同元素的方法 -
js如何删除数组第一个和最后一个元素和数组里添加元素
2021-12-09 13:13:111. shift() 方法用于把数组的第一个元素从其中删除。 2. 返回值: 被删除的元素(即数组原来的第一个元素的值)。 3. 如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。 4. 请注意,该方法不... -
从HashMap获取第一个和最后一个元素
2021-02-28 06:12:066 个答案:答案 0 :(得分:3)首先,地图不是有序的,所以你不会真正拥有第一个和最后一个元素。但是,如果你想获得它的第一个和最后一个元素,你可以只获取值并将其转换为数组。这不是很漂亮,但它会起作用。Map ... -
Python基础--list列表删除元素
2020-12-03 21:55:11列表中删除元素主要分为以下 3 种场景:根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;将列表中所有元素全部...