0
我有任務要麼返回列表中的元素,如果它只有一個元素,或者返回列表本身。我使用的方法適用於大多數用例,但不適用於字符串。pythonic方法來查找列表的內部值
def inner_value(somelist):
'''
Return somelist[0] if it's a one-element list or the whole list otherwise
:param list somelist: list that might contain only one element
:returns: element of somelist or somelist
>>> inner_value([42])
42
>>> inner_value([42,43])
[42, 43]
>>> inner_value([[42]])
42
>>> inner_value([[42,43]])
[42, 43]
>>> inner_value('spam')
'spam'
>>> inner_value(['spam'])
'spam'
>>> inner_value(['spam','eggs','bacon'])
['spam', 'eggs', 'bacon']
.. warning::
This method does not work for dictionaries (KeyError)
or single character strings (infinite recursion)!
'''
try:
if len(somelist) == 1:
return inner_value(somelist[0])
else:
return somelist
except TypeError:
return somelist
有沒有做這樣 inner_value('spam') == 'spam'
的更好的辦法?
啊!那很好。這也讓我對使用TypeError的try塊除外。我覺得嘗試/除了比類型測試更pythonic,但當然這使得它不那麼強大。有趣! – DrSAR