【问题标题】:Indices of elements in a python list of tuplespython 元组列表中元素的索引
【发布时间】:2020-10-13 08:52:33
【问题描述】:

问题

给定 2 个列表 A 和 B,我想获取列表 A 中存在于列表 B 中的所有元素的索引。每个元素都是一个元组。

我正在使用大小为 40,000 个左右元素的列表。

示例案例

输入:

A = [(1,2),(3,4),(5,6),(7,8)]

B = [(1,2),(3,4),(5,6)]

预期输出:

[0,1,2]

尝试的解决方案

我尝试了两种解决方案:

1) 使用地图功能

m = map(a.index,b)
list(m)

2) 使用列表理解

m = [a.index(item) for item in b if item in a]

这些方法似乎花费了太多时间。有没有其他方法可以做到这一点?

【问题讨论】:

  • 您能否提供一个清晰的输入和输出示例?
  • 这还不清楚。你为什么要提供b?如果你只是检查a的位置?
  • 这里为什么有numpy 标签?你试过使用 Numpy 数组吗?
  • 尝试 np.where 与 np.all 和 np.sum。 np.where(np.sum([np.all(np.array(a)== i,axis=1) for i in b],axis=0).astype(bool))
  • @Sruthi 示例中的预期输出不应该是[0, 1, 2] 吗?

标签: python list indexing


【解决方案1】:

以下将是您最好的选择。我正在使用一个集合(即 set(B)),因为可以在 O(1) 时间复杂度内完成对特定元组的搜索。

m = [index for index, tuple in enumerate(A) if tuple in set(B)]

【讨论】:

    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多