Python 实现 last()
Python 实现 last()上代码:
from collections import deque as _deque
_def = object() # default value
def last(iterable, *, default=_def):
"""last(iterable, /, *, default) --> The last item of *iterable*, or *default* if *iterable* is empty"""
try:
return _deque(iterable, maxlen=1)
except IndexError:
if default is _def: # no default value was provided
raise ValueError('last() was called on an empty iterable, '
'and no default value was provided.') from None
return default
print(last()) # Out 7
print(last(range(3, 9))) # Out 8
print(last([], default=0)) # Out 0
print(last(())) # Error
如果代码有问题,欢迎在评论区指正{:10_311:} 存在(发现)IMPORT语句 何必那么麻烦:
def last(iterable):
return tuple(iterable)[-1]
我撑死用到这个,你多写的我
基本都不需要 本帖最后由 永恒的蓝色梦想 于 2020-4-4 14:12 编辑
我也整一个{:10_248:}_no_arg=object()
def last(iterable,/,default=_no_arg):
if hasattr(iterable,'__getitem__'):
try:
return iterable[-1]
except IndexError:
if default is _no_arg:
raise ValueError("last() arg is an empty sequence")
else:
return default
except ValueError:
if hasattr(iterable,'__len__'):
try:
return iterable
except IndexError:
if default is _no_arg:
raise ValueError("last() arg is an empty sequence")
else:
return default
except:
pass
for i in iterable:
pass
try:
return i
except:
if default is _no_arg:
raise ValueError("last() arg is an empty sequence")
else:
return default zltzlt 发表于 2020-4-4 14:07
有误
不是5吗?
页:
[1]