猿问

请问是否有一种按值删除列表元素的简单方法?

是否有一种按值删除列表元素的简单方法?

a = [1, 2, 3, 4]

b = a.index(6)


del a[b]

print a

上面显示了以下错误:


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

所以我必须这么做:


a = [1, 2, 3, 4]


try:

    b = a.index(6)

    del a[b]

except:

    pass


print a

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


呼啦一阵风
浏览 340回答 3
3回答

梦里花落0921

要删除元素在列表中的第一次出现,只需使用list.remove:>>>&nbsp;a&nbsp;=&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d']>>>&nbsp;a.remove('b')>>>&nbsp;print&nbsp;a['a',&nbsp;'c',&nbsp;'d']请注意,它不会删除元素的所有出现。对此使用列表理解。>>>&nbsp;a&nbsp;=&nbsp;[10,&nbsp;20,&nbsp;30,&nbsp;40,&nbsp;20,&nbsp;30,&nbsp;40,&nbsp;20,&nbsp;70,&nbsp;20]>>>&nbsp;a&nbsp;=&nbsp;[x&nbsp;for&nbsp;x&nbsp;in&nbsp;a&nbsp;if&nbsp;x&nbsp;!=&nbsp;20]>>>&nbsp;print&nbsp;a[10,&nbsp;30,&nbsp;40,&nbsp;30,&nbsp;40,&nbsp;70]

饮歌长啸

通常,Python会抛出一个异常,如果您让它做一些它不能做的事情,那么您将不得不这样做:if&nbsp;c&nbsp;in&nbsp;a: &nbsp;&nbsp;&nbsp;&nbsp;a.remove(c)或:try: &nbsp;&nbsp;&nbsp;&nbsp;a.remove(c)except&nbsp;ValueError: &nbsp;&nbsp;&nbsp;&nbsp;pass一个例外并不一定是一件坏事,只要它是你期待和妥善处理的。

千万里不及你

你可以a=[1,2,3,4]if&nbsp;6&nbsp;in&nbsp;a: &nbsp;&nbsp;&nbsp;&nbsp;a.remove(6)但是上面需要搜索2次列表中的6,所以尝试一下会更快try: &nbsp;&nbsp;&nbsp;&nbsp;a.remove(6)except: &nbsp;&nbsp;&nbsp;&nbsp;pass
随时随地看视频慕课网APP

相关分类

Python
我要回答