python 列表 remove()函数使用详解

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

1. 基本使用

remove() 函数可以「删除」列表中的指定「元素」
语法

list.remove( element )

参数

  • element :(必选)任意数据类型(数字、字符串、列表等)

返回值

  • 修改原列表后,返回 None,

实例:删除列表中的元素

list1 = [1, 2, 3, 4]

print('删除前:', list1)
list1.remove(2)
print('删除前:', list1)

输出:

删除前: [1, 2, 3, 4]
删除前: [1, 3, 4]

2. 删除普通类型元素

删除列表中的「数字」「字符串」

list1 = ['zhangsan', 'lisi', 1, 2]
list1.remove(1)  # 删除数字
print(list1)
list1.remove('zhangsan')  # 删除字符串
print(list1)

输出:

['zhangsan', 'lisi', 2]
['lisi', 2]

remove() 删除元素时,如果列表中「不存在」这个元素,会报错 ValueError: list.remove(x): x not in list

在这里插入图片描述

3. 删除对象类型元素

列表中存在「列表」「元组」「字典」这类数据时,会整体当做一个元素。
我们删除列表中的列表和元组,必须整个删除,就像下面这样

list1 = [1, 2, [3, 4], (5, 6)]
a = [3, 4]
b = (5, 6)
list1.remove(a)  # 删除列表类型
print(list1)
list1.remove(b)  # 删除元祖类型
print(list1)

输出:

[1, 2, (5, 6)]
[1, 2]

像下面这样,列表中有一个元素是列表类型,我想删除这个元素里的2,就会报错,

list1 = [1, 1, [2, 2]]

list1.remove(2)

输出:

在这里插入图片描述

或者下面这种方式也会报错

list1 = [1, 2, 3]
list1.remove([1,2])

输出:

Traceback (most recent call last):
  File "E:/data/PrCharm/test1/55.py", line 2, in <module>
    list1.remove([1,2])
ValueError: list.remove(x): x not in list
# 值错误: 需要删除的值不在列表中

4. 一次只删一个元素

remove() 按照从左到右的顺序,「匹配」列表中每一个元素,匹配到了就「删除」这个元素,然后结束。

这意味着,如果列表中有两个相同的元素,就只有「最左边」那个元素会被删除。

list1 = ['a', 'a', 'a']

print('删除前:', list1)
list1.remove('a')
print('删除前:', list1)

输出:

删除前: ['a', 'a', 'a']
删除前: ['a', 'a']

5、布尔类型

「布尔类型」的情况,与其他类型是不同的。

我们都知道,True = 1,False 0,当我们删除 1 时,列表中的True会被删除,比如下面这样

list1 = [True, 2, 3]

print('删除前:', list1)
list1.remove(1)
print('删除后:', list1)

输出:

删除前: [True, 2, 3]
删除后: [2, 3]

6、实际应用

remove() 删除列表中「不存在」的元素会报错,为了避免报错,我们需要先判断元素是否存在,再删除元素

list1 = [1, 1, 1, 1, 1]

print('删除前:', list1)

while 1 in list1:
    list1.remove(1)

print('删除后:', list1)

输出:

删除前: [1, 1, 1, 1, 1]
删除后: []

需要注意的是,使用for循环删除元素时,会不符合预期,比如下面这个案例,删除所有内容为1 的元素,就没有全部删除

list1 = [1, 1, 1, 1, 1]

print('删除前:', list1)

for i in list1:
    if i == 1:
        list1.remove(i)

print('删除后:', list1)

输出:

删除前: [1, 1, 1, 1, 1]
删除后: [1, 1]

我们的预期是:列表长度是5,for会循环5次
但实际上,每删除一个元素,列表的长度就会减一,for就会少循环一次。
因此,我们可以用上面提到的 while循环,或者其他方式。

  • 65
    点赞
  • 304
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日wyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值