python列表删除元素整理

先看一个例子:

test1 = [‘a‘,‘b‘,‘c‘,‘‘,‘‘]for i in test1:
    if i == ‘‘:
        test1.remove(i) #删除空元素
print(test1)

>>>[‘a‘, ‘b‘, ‘c‘, ‘‘]

这时发现并没有达到我们想要的结果,原因分析如下:

要了解一下python列表的数据结构,列表属于连续线性表,它的连续在于有一块连续的内存储存着列表中元素的地址,如图(忽略地址与值所占的字节,只为方便举例子):

当然也可以通过一个代码来看证明一下:

a=[1,2,3]
for i in a:
    print(id(i))>>>1514106336  #此地址即为左边的连续地址

1514106368
   1514106400

回到问题,当我们删除test1中的空字符时,列表有三种删除元素方式,del,remove,pop,其中del是python的一个方法不是列表所特有,pop()参数为元素的索引,remove()参数是想要删除的值
用一下del看看会出现什么结果:
a=[1,2,3]
for i in a:
    if i==2:
        del i
        print(id(i))#报错 NameError: name ‘i‘ is not defined
a=[1,2,3]
for i in a:
    if i==2:
        del i #del是解除引用,python中一切皆引用
    try:
         print(id(i))
    except NameError:
        pass
a删除前地址1927704032    删除后输出1927704032
      1927704064            1927704096
       1927704096
 

对比地址的变化,可以得知del删除了该元素内存地址引用。

删除列表中的空元素有这两种方法:

#第一种
test2 = [‘a‘,‘‘,‘b‘,‘‘,‘c‘,‘‘,‘‘]
while ‘‘ in test2:
    test2.remove(‘‘)
print(test2)
>>>[‘a‘, ‘b‘, ‘c‘]
#第二种
test2_new = [i for i in test2 if i != ‘‘] #生成一个新的列表

即删除列表中指定元素建议使用上述两种方法,不要用for循环。

上面记录是写代码时踩的坑,有不严谨或者错误的地方期望大家指正。

原文地址:https://www.cnblogs.com/python-dd/p/9152687.html

时间: 2024-10-08 18:18:52

python列表删除元素整理的相关文章

Python列表删除的三种方法

1.使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> print(i1) ['b', 'c', 'd'] >>> del语句将值从列表中删除后,就再也无法访问它了. 2.使用pop()删除元素 pop()可删除列表末尾的元素,并让你能够接着使用它.食欲弹出(pop)源自这样的类比:列表就是一个栈,而删除列表末尾的元素相当于弹出栈顶元素. >>

Python list删除元素

pop()方法 php(n) 从list删除元素Paul同学刚来几天又要转走了,那么我们怎么把Paul 从现有的list中删除呢?如果Paul同学排在最后一个,我们可以用list的pop()方法删除:>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']>>> L.pop()'Paul'>>> print L['Adam', 'Lisa', 'Bart']pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以

Python循环列表删除元素问题

有人会遇到这种问题,遍历列表,想删除列表中的某几个元素,执行后发现有些并没有删除到, 比如以下代码 a=[1,2,3,4,5,6]print(a) for i in a: if i==3 or i==4: a.remove(i)print(a) 从代码看主要就是想删除a列表中的 3 4 元素, 程序的结果是: [1, 2, 3, 4, 5] [1, 2, 4, 5] 结果不尽人意,原因是我们在遍历的时候 seek走到了3元素的位置 if判断remove 3  这个元素 3这个位置删除后位置空出来

python 原生列表删除元素方法总结

一.列表方法remove(),按值删除,删除首个符合的元素 二.列表方法pop(),按索引删除,默认删除最后一个元素 三.del函数,删除某个变量或者某些元素 原文地址:https://www.cnblogs.com/dearL/p/9545402.html

Python 字典删除元素clear、pop、popitem

原文网站:http://www.iplaypython.com/jinjie/jj116.html 同其它python内建数据类型一样,字典dict也是有一些实用的操作方法.这里我们要说的是字典删除方法:clear().pop()和popitem(),这三种方法的作用不同,操作方法及返回值都不相同.接下来就来查看下这些字典特定方法的具体用法是什么. 字典clear()方法 clear()方法是用来清除字典中的所有数据,因为是原地操作,所以返回None(也可以理解为没有返回值) >>> x

Python遍历删除元素

需求: 有一个列表:ls = [1,2,3,4,5,6],要求删除其中的偶数 如果是下面这种方法,在遍历的过程中删除,会有问题 for i in range(len(ls)): if ls[i]%2 == 0: del ls[i] 异常:IndexError: list index out of range 因为删除一个元素后,列表的长度改变了,所以会报下标越界. 可以采取一下三种方法: 1. ls = [x for x in ls if x%2!=0] #列表解析 2. ls = filter

python列表(list)常用方法整理

1.append(obj)   向列表中添加一个对象obj 2.count(obj) 返回一个对象obj在列表中出现的次数. 3.extend(seq) 把序列seq的内容添加到列表中. 4.index(obj,i=0 ,j=len(list))返回list[k] == obj 的值,并且k的范围在i <= k < j :否则引发valueError异常. 5.insert(index,obj)在索引量为index的位置插入对象obj. 6.pop(index=-1) 删除并返回指定位置的对象

python 列表字符串元素乱序

from random import shuffle color = ['1', '2', '3', '4', '5'] shuffle(color) print(color) 原文地址:https://www.cnblogs.com/sea-stream/p/9966153.html

Python列表操作与深浅拷贝(7)——列表深浅拷贝、删除、反转、排序

列表复制 浅拷贝:简单类型元素全复制,引用类型元素只复制引用 L1 = [3,2,1,[4,5,6],8,'abc'] L1 [3, 2, 1, [4, 5, 6], 8, 'abc'] L2 = L1.copy() L2 [3, 2, 1, [4, 5, 6], 8, 'abc'] L1[3][1] = 10 #修改L1中的元素L2也随之变化 L1 [3, 2, 1, [4, 10, 6], 8, 'abc'] L2 [3, 2, 1, [4, 10, 6], 8, 'abc'] 深拷贝:co