Python中列表元素删除

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SilentWu/article/details/72876722

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 random
def deleteoddnumber(x):
    for i in range(len(x) - 1, 0, -1): # 循环倒序
        if x[i] % 2 != 0:
            del x[i]
    return x
x = []
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 random
def deleteoddnumber(x):
    for i in range(len(x)):# 循环正序
        if x[i] % 2 != 0:
            del (x[i])
    return x
x = []
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))

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

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

猜你喜欢

转载自blog.csdn.net/SilentWu/article/details/72876722