【问题标题】:python - simple way to join 2 arrays/lists based on common valuespython - 基于公共值加入 2 个数组/列表的简单方法
【发布时间】:2015-04-05 01:00:23
【问题描述】:

我已经尝试了一段时间,但找不到一种简单的方法来连接仅基于公共值的 2 个列表或数组。类似于 SQL 内连接,但使用数组/列表而不是 dict 或其他一些数据类型。例如。

a = [1, 2, 3]
b = [2, 3, 4]
join(a, b)

打印

[2, 3]

看起来很简单,但缺少 python 或 numpy。

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

可能是重复的,但万一不是:

>>> a = [1,2,3]
>>> b = [2,3,4]
>>> list(set(a) & set(b))
[2, 3]

对于大型列表(外部数据),请参阅this S.O. answer

【讨论】:

  • 我不熟悉与 set() 一起使用的二进制 AND 运算符。在这种情况下,&运算符是对两个集合中每个元素的位进行操作,还是对两个集合的元素(作为一个整体)进行操作?
  • 对于集合,& 执行集合交集,返回一个新集合,其中包含ab 中的所有元素。它与比特无关。如果在两个int 操作数之间使用& 运算符,那么它将执行按位与。在 Python 中,您可以创建自己的类并让操作符做几乎任何您想做的事情。如果使用得当,这通常被认为是一件好事。顺便说一句,Python set 类使 | 执行联合,^ 执行不相交联合,- 执行集合减法。
  • 感谢您的回复!
【解决方案2】:

如果您需要保持列表与a中相同的顺序:

a = [1, 2, 3]
b = [2, 3, 4]
c = [x for x in a if x in b]

如果顺序不重要,请使用 Ray 答案,这应该会更快,但不能保证列表顺序与 a 中的元素顺序相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    相关资源
    最近更新 更多