Python中与R的%in%操作符等效的操作是什么?

3

我开始学习Python,常常需要但不知道如何在Python中编程/实现的一个函数是R语言中的x %in% y运算符。其工作方式如下:

1:3 %in% 2:4

##[1] FALSE  TRUE  TRUE

x中的第一个元素(1)在y中没有匹配,因此为FALSE,而x的最后两个元素(2和3)在y中有匹配,因此它们得到了TRUE

请注意,我并不希望这能够在Python中工作,因为在R中也无法工作,但是在Python中使用==,我得到:

[1, 2, 3] == [2, 3, 4]
# False

如何在Python中获得与此类似的运算符?如果已经存在这样的运算符,我并不局限于使用基本的Python。


这是 [x in range(2,5) for x in range(1,4)] 吗? - khelwood
5
https://dev59.com/hV8e5IYBdhLWcg3w7-Fz - Sumedh
1
这怎么算是重复?另一个问题要求使用panda特定的解决方案,而答案与“in”的一般概念无关。 - FMaz
1
可以使用 for i in x: [].append(i in y)[i in y for i in x] - data_steve
2个回答

3

实际上很简单。

if/for element in list-like object. 

具体来说,当对列表进行此操作时,它将比较列表中的每个元素。当使用字典作为类似于列表的对象(可迭代对象)时,它将使用字典键作为要迭代的对象。
祝好!
编辑: 对于您的情况,您应该利用“列表推导式”。
[True for element in list1 if element in list2]

我不确定我理解你的回答——在Python中,“if element in list-like object”和“for element in list-like object”是两个根本不同的操作。第二个执行迭代,而不是成员资格测试。第一个执行成员资格测试(请参见我的答案),但“if”不是语法的一部分。 - Konrad Rudolph
我知道。我只是想展示“in”关键字的其他用法。 - FMaz
妙用if。加一分。 - akrun

2

%in% 在 Python 中就是 in。但是,与 numpy 以外的 Python 大多数其他东西一样,它不是向量化的:

In [1]: 1 in [1, 2, 3]
Out[1]: True

In [2]: [1, 2] in [1, 2, 3]
Out[2]: False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接