首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有一种简单的方法可以按值删除列表元素?

有没有一种简单的方法可以按值删除列表元素?
EN

Stack Overflow用户
提问于 2010-05-08 15:48:29
回答 24查看 1.9M关注 0票数 1.1K

我想从列表中删除一个值,如果它存在于列表中(可能不存在)。

代码语言:javascript
复制
a = [1, 2, 3, 4]
b = a.index(6)

del a[b]
print(a)

上面的情况(其中它不存在)显示了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "D:\zjm_code\a.py", line 6, in <module>
    b = a.index(6)
ValueError: list.index(x): x not in list

所以我必须这样做:

代码语言:javascript
复制
a = [1, 2, 3, 4]

try:
    b = a.index(6)
    del a[b]
except:
    pass

print(a)

但是,没有更简单的方法来做到这一点吗?

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2010-05-08 15:56:03

要删除列表中元素的第一个匹配项,只需使用list.remove

代码语言:javascript
复制
>>> a = ['a', 'b', 'c', 'd']
>>> a.remove('b')
>>> print(a)
['a', 'c', 'd']

注意,它不会删除元素的所有匹配项。对此使用列表理解。

代码语言:javascript
复制
>>> a = [10, 20, 30, 40, 20, 30, 40, 20, 70, 20]
>>> a = [x for x in a if x != 20]
>>> print(a)
[10, 30, 40, 30, 40, 70]
票数 1.8K
EN

Stack Overflow用户

发布于 2010-05-08 16:02:03

通常,如果你告诉Python做一些它不能做的事情,它会抛出一个异常,所以你必须这样做:

代码语言:javascript
复制
if c in a:
    a.remove(c)

或者:

代码语言:javascript
复制
try:
    a.remove(c)
except ValueError:
    pass

异常并不一定是一件坏事,只要它是您所期望的并得到正确处理。

票数 202
EN

Stack Overflow用户

发布于 2010-05-08 15:57:26

你可以做到

代码语言:javascript
复制
a=[1,2,3,4]
if 6 in a:
    a.remove(6)

但上面需要在列表a中搜索6个2次,所以尝试一下,除了会更快

代码语言:javascript
复制
try:
    a.remove(6)
except:
    pass
票数 87
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2793324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档