Python 中的列表索引的 getattr?
getattr for a list index in Python?
我知道我可以做一个 try/except 或 if/else 并根据错误或 else 子句设置一个默认值,但我只是想知道是否有一个 one liner 可以做到这一点getattr
可以。
好的: 只是def
一个辅助函数
def my_getitem(container, i, default=None):
try:
return container[i]
except IndexError:
return default
不好的:可以单行有条件的版本
item = container[i] if i < len(container) else default
丑陋的:这些都是黑客,不要使用。
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)
我知道我可以做一个 try/except 或 if/else 并根据错误或 else 子句设置一个默认值,但我只是想知道是否有一个 one liner 可以做到这一点getattr
可以。
好的: 只是def
一个辅助函数
def my_getitem(container, i, default=None):
try:
return container[i]
except IndexError:
return default
不好的:可以单行有条件的版本
item = container[i] if i < len(container) else default
丑陋的:这些都是黑客,不要使用。
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)