Jua*_*blo 41 python error-handling list elements
如果我在列表中不存在a.remove(x)
时调用,如何忽略"not in list"错误消息?x
a
这是我的情况:
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.remove(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> a.remove(9)
Run Code Online (Sandbox Code Playgroud)
Nik*_* B. 42
一个好的,线程安全的方法是尝试它并忽略异常:
try:
a.remove(10)
except ValueError:
pass # do nothing!
Run Code Online (Sandbox Code Playgroud)
g.d*_*d.c 32
只要元素的顺序不一定重要,我个人会考虑使用a set
而不是a list
.然后你可以使用discard方法:
>>> S = set(range(10))
>>> S
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> S.remove(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 10
>>> S.discard(10)
>>> S
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
ret*_*ian 17
作为忽略ValueError的替代方法
try:
a.remove(10)
except ValueError:
pass # do nothing!
Run Code Online (Sandbox Code Playgroud)
我认为以下内容更直接,更易读:
if 10 in a:
a.remove(10)
Run Code Online (Sandbox Code Playgroud)
当我只关心确保条目不在列表、字典或集合中时,我使用 contextlib,如下所示:
import contextlib
some_list = []
with contextlib.suppress(ValueError):
some_list.remove(10)
some_set = set()
some_dict = dict()
with contextlib.suppress(KeyError):
some_set.remove('some_value')
del some_dict['some_key']
Run Code Online (Sandbox Code Playgroud)
列表理解如何?
a = [x for x in a if x != 10]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37766 次 |
最近记录: |