>>>
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']
>>> line.split('-')
['I', '', '', 'like', '', 'python']
>>> filter(lambda x: x != '', line.split('-'))
['I', 'like', 'python']
Пример в котором нужно вывести список с НЕ уникальными значениями
['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]
Комментариев нет:
Отправить комментарий