Python中列表元素删除

来源:互联网 发布:java小明要到美国旅游 编辑:程序博客网 时间:2024/06/05 02:14

Python中列表元素删除

1.使用del命令删除列表中的指定位置上的元素

l = [1, 2, 3, 4, 5]del l[2] #将下标为2的元素删除print(l)#[1, 2, 4, 5]del l #将列表l删除 此时再打印输出就会报错 因为这个列表没有定义print(l)#NameError: name 'l' is not defined

[1, 2, 4, 5]Traceback (most recent call last):  File "F:/pythonDemo/python代码/生成随机数并将奇数删除.py", line 54, in <module>    print(l)NameError: name 'l' is not defined

当要用del命令循环删除元素时,应当倒序删除 

import randomdef deleteoddnumber(x):    for i in range(len(x) - 1, 0, -1): # 循环倒序        if x[i] % 2 != 0:            del x[i]    return xx = []while True:    if len(x) == 20:        break    n = random.randint(1, 100)    if n not in x:        x.append(n)print('删除奇数元素前\n', x) print('删除奇数元素后\n', deleteoddnumber(x))
删除奇数元素前 [24, 19, 71, 2, 83, 1, 6, 45, 29, 38, 78, 74, 46, 14, 93, 48, 100, 31, 25, 30]删除奇数元素后 [24, 2, 6, 38, 78, 74, 46, 14, 48, 100, 30]

若是正序删除 则会出现下标越界报错

import randomdef deleteoddnumber(x):    for i in range(len(x)):# 循环正序        if x[i] % 2 != 0:            del (x[i])    return xx = []while True:    if len(x) == 20:        break    n = random.randint(1, 100)    if n not in x:        x.append(n)print('删除奇数元素前\n', x)print('删除奇数元素后\n', deleteoddnumber(x))
删除奇数元素前Traceback (most recent call last): [84, 93, 16, 40, 12, 98, 67, 97, 83, 39, 26, 25, 99, 19, 17, 62, 68, 43, 4, 47]  File "F:/pythonDemo/python代码/生成随机数并将奇数删除.py", line 15, in <module>    print('删除奇数元素后\n', deleteoddnumber(x))  File "F:/pythonDemo/python代码/生成随机数并将奇数删除.py", line 4, in deleteoddnumber    if x[i] % 2 != 0:IndexError: list index out of range

会出现列表下标越界错误,

 2.使用列表的pop()方法删除并返回指定位置上的元素(默认为最后一个即pop(len(list)-1),删除下标为index的元素可表示为pop(index))

下标index不可以超过列表范围,否则抛出异常。

l = [1, 2, 3, 4, 5]print(l.pop(len(l)-1)) # 和l.pop()效果相同 print(l.pop(3))

54
3.使用列表对象的remove()方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。

l = [1, 2, 3, 3, 4, 5]l.remove(1) #删除元素值为1的元素l.remove(3) #删除元素值为3的元素 print(l)
[2, 3, 4, 5]
值得注意的是,删除的时候remove方法总是将第一个找到的元素进行删除 而没有把所有相同的元素值都给删除。

原创粉丝点击