python 删除list中的第一个元素

目录

1.python 删除list中元素三种方式(一般)

1. pop()

2.del

3.remove

2.嵌套数组删除存在的问题


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存放的是索引,并不是实际的值

Solution:

思路:将索引改为实际的值,然后再删除
具体步骤:
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此时相同

 

 

上一篇:linux驱动开发笔记_自旋锁


下一篇:Java并发编程——深入理解自旋锁