python`in`关键字作为过滤器中使用的函数

hua*_*uan 10 python keyword

是否可以in在过滤器中使用python关键字?我知道二进制,一元,赋值操作等同于函数调用.

如

''!=3
Run Code Online (Sandbox Code Playgroud)

是相同的

''.__ne__(3)
Run Code Online (Sandbox Code Playgroud)

这个in功能有类似的东西吗?我想做这样的事情...

filter( list1.__in__, list2 )
Run Code Online (Sandbox Code Playgroud)

我想这可以通过编写函数来完成...但我只是想知道它是否已经内置.

Dan*_* D. 15

filter( list1.__contains__, list2 )
Run Code Online (Sandbox Code Playgroud)

更清晰地写成:

[ v for v in list2 if v in list1 ]
Run Code Online (Sandbox Code Playgroud)

并显示等价:

>>> list1 = [2, 4, 6, 8, 10]
>>> list2 = [1, 2, 3, 4, 5]
>>> [ v for v in list2 if v in list1 ]
[2, 4]
Run Code Online (Sandbox Code Playgroud)


And*_*ark 8

你在找__contains__.

>>> [1, 2, 3].__contains__(2)
True
>>> [1, 2, 3].__contains__(4)
False
Run Code Online (Sandbox Code Playgroud)

为了你想做的事:

>>> list1 = [2, 4, 6, 8, 10]
>>> filter(list1.__contains__, [1, 2, 3, 4, 5])
[2, 4]
Run Code Online (Sandbox Code Playgroud)