2017-02-23 35 views
0

Как сделать следующее, используя лямбда-выражения в Python?Как сделать выбор с помощью лямбда-выражений python

result = None 
    for current in listOfObjects: 
     if current.number == 5: 
     result = current.files 
     break 
+0

Вы хотите только '.files' первого появления' .number' 5? – PinkFluffyUnicorn

+1

Зачем вы хотите использовать лямбда для этого? –

+0

@PinkFluffyUnicorn да, только первое появление числа 5 – devnull

ответ

2

Вы можете использовать filter с лямбда-выражения, если вам нужен критерий выбора, чтобы быть что-то динамический:

list_of_stuff = [type('obj', (object,), {'number' : n, 'files': ['testa', 'testb']}) for n in range(10)] 

result = next(filter(lambda x: x.number==5, list_of_stuff)).files 

Здесь я просто беру первый результат, как вы. Если у вас всегда есть один и тот же критерий выбора, это может иметь смысл использовать список понимание вместо:

result = next(x for x in list_of_stuff if x.number==5).files 
1

Не то, чтобы это имело бы никакого смысла использовать лямбда здесь, только ради него:

next(filter(lambda x:x.number==5,listOfObjects)).files