如果索引不存在,有没有办法用默认值从列表中弹出一个元素?我知道对于字典,python允许pop函数返回默认值,如下所示:
d = {"stack": "overflow"}
d.pop("stack", 10) # returns "overflow"
d.pop("badkey", 10) # returns 10有没有列表的等价物?看起来python的默认列表弹出方法是does not support default values,那么实现下面代码片段中所示功能的最python方式是什么呢?
def pop_default(input_list, index, default_value):
try:
temp = input_list[index].copy()
del input_list[index]
except IndexError:
return default_value发布于 2021-04-09 04:31:19
copy和del是怎么回事?只需尝试pop,并捕获IndexError
def pop_default(input_list, index, default_value):
try:
return input_list.pop(index)
except IndexError:
return default_value如果你打算在你的代码库中多次这样做,你可以使用子类(但是它可能会更令人困惑,所以使用上面的函数可能更好)
from collections import UserList
class MyList(UserList):
def pop(self, index, default_value=None):
try:
return super().pop(index)
except IndexError:
return default_value
my_list = MyList(['a'])
print(my_list.pop(0))
print(my_list.pop(0, 'default'))输出
'a'
'default'发布于 2021-04-09 04:34:43
我会用一个线条:
out = a.pop(a.index(value)) if value in a else default其中a是您的列表。
如果给你一个索引,那么
out = a.pop(index) if index >=(len(a)-1) else default编辑:
在@Andrew的观察来解释负指数之后,加上用比较来修正拼写错误,一行版本将得到如下结果:
out = a.pop(index) if len(a)<=index<=len(a)-1 else defaulthttps://stackoverflow.com/questions/67011427
复制相似问题