【问题标题】:An equivalent to R's %in% operator in Python相当于 Python 中 R 的 %in% 运算符
【发布时间】:2016-07-26 20:38:46
【问题描述】:

我开始学习更多关于 Python 的知识。我经常想要但不知道如何在 Python 中编程/执行的一个功能是 R 中的 x %in% y 运算符。它的工作原理如下:

1:3 %in% 2:4

##[1] FALSE  TRUE  TRUE

x (1) 中的第一个元素在 y 中没有匹配项,因此 FALSE 的最后两个元素 x (2 & 3) 在 y 中确实有匹配项,所以他们得到TRUE.

并不是我期望这会起作用,因为它在 R 中也不会起作用,而是在 Python 中使用 == 我得到:

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

如何在 Python 中获得相同类型的运算符?如果其他地方已经存在这样的运算符,我不会绑定到基础 Python。

【问题讨论】:

  • 会是[x in range(2,5) for x in range(1,4)] 吗?
  • 这是怎么复制的?另一个问题要求针对熊猫的解决方案,答案与“in”的一般概念无关。
  • 可以for i in x: [].append(i in y)[i in y for i in x]

标签: python r


【解决方案1】:

其实很简单。

if/for element in list-like object. 

具体来说,当对列表执行此操作时,它将比较该列表中的每个元素。当使用 dict 作为类列表对象(可迭代)时,它将使用 dict 键作为对象进行迭代。

干杯

编辑: 对于您的情况,您应该使用“列表理解”。

[True for element in list1 if element in list2]

【讨论】:

  • 我不确定我是否理解你的答案——if element in list-like objectfor element in list-like object 在 Python 中是两个根本不同的操作。第二个执行迭代,而不是成员资格测试。第一个执行成员资格测试(请参阅我的答案),但 if 不是语法的一部分。
  • 我知道。我只是想演示“in”关键字的其他用途。
  • 善用if。加一。
【解决方案2】:

%in% 在 Python 中只是 in。但是,就像 Python 中除 numpy 之外的大多数其他东西一样,它不是矢量化的:

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

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

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2014-10-02
    • 2012-07-20
    • 2022-10-18
    • 2012-04-23
    相关资源
    最近更新 更多