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
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方法总是将第一个找到的元素进行删除 而没有把所有相同的元素值都给删除。