2015-01-14 3 views
4

Есть ли более Pythonic способ определения этой функции?больше pythonic версия функции итерации списка

def idsToElements(ids): 
    elements = [] 
    for i in ids: 
     elements.append(doc.GetElement(i)) 
    return elements 

Возможно его возможно со списком осмысления. Я в основном ищут список идентификаторов и изменяю их на список элементов в чем-то более простом, чем определение функции.

ответ

15

map() является Python встроенный, который делает именно то, что вы хотите.

def idsToElements(ids): 
    return map(doc.GetElement, ids) 

Использование map() против использования списков-постижений обсуждается here.

Самый популярный (и принял ответ) заключение цитируется здесь:

карта может быть микроскопически быстрее в некоторых случаях (когда вы не делаете лямбда для этой цели, но используя ту же функцию в map и listcomp). Перечисления списков могут быть более быстрыми в других случаях, и большинство (не все) pythonistas считают их более прямыми и понятными.

29

Если список постижение все, что вы хотели

def idsToElements(ids): 
    return [doc.GetElement(i) for i in ids ] 
Смежные вопросы