python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python3列表删除

Python3列表删除的三种方式实现

作者:hello-alien

本文主要介绍了Python3列表删除的三种方式实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 删除列表(list)的三种方式

(1).按照元素删除—remove()

my_list = [1, 2, 3, 4, 2, 5]
my_list.remove(2)
print(my_list)


# 结果
[1, 3, 4, 2, 5]
my_list = [1, 2, 3, 4, 2, 5]
my_list.remove(6)				# 没有元素6,最终会抛出异常
print(my_list)


# 结果
Traceback (most recent call last):
  File "/Users/alien_test.py", line 58, in <module>
    my_list.remove(6)
ValueError: list.remove(x): x not in list

(2).按照索引删除—pop()

# 根据索引删除元素

my_list = [1, 2, 3, 4, 2, 5]
item = my_list.pop(1)
print(my_list)
print(item)


# 结果
[1, 3, 4, 2, 5]
2		# 元素2是对应索引为1的值
# 删除最后一个元素

my_list = [1, 2, 3, 4, 2, 5]
item = my_list.pop()
print(my_list)
print(item)


# 最终结果 
[1, 2, 3, 4, 2]
5
# 越界抛出异常

my_list = [1, 2, 3, 4, 2, 5]
item = my_list.pop(8)
print(my_list)
print(item)


# 结果
Traceback (most recent call last):
  File "/Users/test/alien_test.py", line 58, in <module>
    item = my_list.pop(8)
IndexError: pop index out of range

(3).按照索引删除—del()

my_list = [1, 2, 3, 4, 2, 5]

del my_list[1]      #等同于 del(my_list[1])
print(my_list)


# 结果
[1, 3, 4, 2, 5]
my_list = [1, 2, 3, 4, 2, 5]
del my_list[8]
print(my_list)


# 异常结果
Traceback (most recent call last):
  File "/Users/test/alien_test.py", line 58, in <module>
    del my_list[8]
IndexError: list assignment index out of range

2. 删除元素引发的思考

(1).事故发生现场

【case 1:】

my_list = [1, 2, 2, 3, 2]
for item in my_list:
    if item == 2:
        my_list.remove(item)
print(my_list)


# [1, 3, 2]

【case 2:】

my_list = [1, 2, 2, 3, 2]
for index in range(len(my_list)):
    if my_list[index] == 2:
        my_list.pop(index)
print(my_list)



# 结果

Traceback (most recent call last):
  File "/Users/test/alien_test.py", line 59, in <module>
    if my_list[index] == 2:
IndexError: list index out of range

(2).列表----正序遍历的过程分析

my_list = [1, 2, 2, 3, 2]
for item in my_list:
    print("item-------->", item)
    if item == 2:
        my_list.remove(item)
print(my_list)


# 结果:

item--------> 1
item--------> 2
item--------> 3
item--------> 2
[1, 3, 2]

【分析过程:】

step1:列表的遍历过程如下

列表的遍历是通过游标来控制列表的位置,从索引为0号位一直到最后一个位置,依次遍历

step2:列表的删除某个元素流程如下

当遍历到索引为1的位置时候,准备删除这个位置元素

(3).列表----倒序遍历的过程分析

my_list = [1, 2, 2, 3, 2]
for index in range(len(my_list) - 1, -1, -1):
    item = my_list[index]
    print("item-------->", index, "--->", item)
    if item == 2:
        my_list.pop(index)
print(my_list)


# 结果
item--------> 4 ---> 2
item--------> 3 ---> 3
item--------> 2 ---> 2
item--------> 1 ---> 2
item--------> 0 ---> 1


[1, 3]

1.通过倒序的遍历,可以把所有的2元素都删除了,倒序为什么能解决如上的问题?
2.倒序也会出现删除的元素的位置,被新元素占用的情况?

step1:列表倒序的遍历过程如下

step2:列表的删除某个元素流程如下

当遍历到索引为4的位置时候,准备删除这个位置元素

3. 删除列表中重复的元素

(1).根据索引删除—(如上倒序的方式)

my_list = [1, 2, 2, 3, 2]
for index in range(len(my_list) - 1, -1, -1):
    item = my_list[index]
    print("item-------->", index, "--->", item)
    if item == 2:
        my_list.pop(index)
print(my_list)

(2).根据元素删除—(结果正确,但是过程是错误)

my_list = [1, 2, 2, 3, 2]
for index in range(len(my_list) - 1, -1, -1):
    item = my_list[index]
    print("item-------->", index, "--->", item)
    if item == 2:
        my_list.remove(item)
        print("--->", my_list)
print(my_list)


# 结果

item--------> 4 ---> 2
---> [1, 2, 3, 2]				# 此处倒序遍历,其实删除的是从左向右的第一个元素2

item--------> 3 ---> 2
---> [1, 3, 2]					# 此除遍历的是第二个2,删除的也是第二个元素


item--------> 2 ---> 2
---> [1, 3]						# 次数遍历的是最后一个2,删除的也是这个元素

item--------> 1 ---> 3
item--------> 0 ---> 1

[1, 3]

如上的方式不好的地方是:

到此这篇关于Python3列表删除的三种方式实现的文章就介绍到这了,更多相关Python3列表删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文