2016-12-21 2 views
0

Я пытаюсь сопоставить list.__contains__, но я получаю следующее сообщение об ошибкеКак я могу составить список .__ contains__?

In [31]: map(list.__contains__(3), [[1,2],[1,3]]) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-31-613ca9e4966b> in <module>() 
----> 1 map(list.__contains__(3), [[1,2],[1,3]]) 

TypeError: descriptor '__contains__' requires a 'list' object but received a 'int' 

Что я делаю неправильно здесь?

ответ

2

Вам нужно перевернуть порядок аргументов или просто использовать lambda, что проще.

map(lambda x: 3 in x, [[1,2],[1,3]]) 

Эквивалент список понимания, который немного короче:

[3 in x for x in [[1,2],[1,3]]] 
+0

Понял буквально передо мной. Карта должна знать, какой метод экземпляра экземпляра list вызывает его. –

+0

спасибо за это, отличный трюк, чтобы использовать список, чтобы избавиться от лямбда, v. Pythonic – maxymoo

Смежные вопросы