У меня есть функция, которая должна возвращать несколько списков. Я прочитал в этом посте , а также здесь , что возвращение нескольких параметров предпочтительно выполняется с помощью именованных кортежей. Однако я не уверен, как лучше всего обрабатывать списки в именованных кортежах.
Таким образом, я придумал два решения, либо
def return_named_tuple(someList):
retTuple = namedTuple('retTuple',['featA', 'featB'])
featALst = []
featBLst = []
for el in someList:
featALst.append(some_operation_on_el(el))
featBLst.append(another_operation_on_el(el))
return retTuple(featALst, featBLst)
или
def return_dict_with_lsts(someList):
retDct = {'featA':[], 'featB':[]}
for el in someList:
retLst['featA'].append(some_operation_on_el(el))
retLst['featB'].append(another_operation_on_el(el))
return retDct
Итак, есть ли причина (память, производительность, шаблоны проектирования и т. Д.) Отдавать предпочтение одному решению другому? Первое решение обычно рекомендуется, но (учитывая больше возможностей) второе решение выглядит короче и, следовательно, лучше.