воскресенье, 8 декабря 2013 г.

Использование lambda вместе со списком в Python

Очень наглядный пример использования lambda с методами списков в Python

>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> 
>>> print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>> 
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>> 
>>> print reduce(lambda x, y: x + y, foo)
139


>>> digit = [1, 2, 3]
>>> 
>>> print [(lambda x: x * x)(x) for x in digit)]
[1, 4, 9]
или лучше
>>> print [x * x for x in digit]

Еще интересный пример (вырезать в строке лишние дефисы)



>>> line = 'I---like--python'
>>> print '-'.join(filter(lambda x: x != '', line.split('-')))
I-like-python
Объяснение:
>>> line.split('-')
['I', '', '', 'like', '', 'python']
>>> filter(lambda x: x != '', line.split('-')) 
['I', 'like', 'python']

Пример в котором нужно вывести список с НЕ уникальными значениями
Неудачное решение:
>>> lst = [10, 9, 10, 10, 9, 8]
>>> out_lst = []

>>> for i in range(len(lst)):
>>>     x = lst.pop(i)    
>>>     if x in lst:
>>>         out_lst.append(x)
>>>     lst.insert(i, x)
>>> print out_lst
[10, 9, 10, 10, 9]
Лучшее решение:
>>>  print (lambda d:[x for x in d if d.count(x)>1])(lst)
[10, 9, 10, 10, 9]

Комментариев нет:

Отправить комментарий