我知道我可以尝试/除了或if/else并根据错误或else子句设置默认值,但我只是想知道是否有一个可以像getattrcan 一样做的单行.
好处:只是def辅助功能
def my_getitem(container, i, default=None):
try:
return container[i]
except IndexError:
return default
Run Code Online (Sandbox Code Playgroud)
坏:你可以单行条件版本
item = container[i] if i < len(container) else default
Run Code Online (Sandbox Code Playgroud)
丑陋:这些都是黑客,不要使用.
item = (container[i:] + [default])[0]
item, = container[i:i+1] or [default]
item = container[i] if container[i:] else default
item = dict(enumerate(container)).get(i, default)
item = next(iter(container[i:i+1]), default)
Run Code Online (Sandbox Code Playgroud)