【发布时间】:2012-05-09 04:03:30
【问题描述】:
对于两个列表 a 和 b,如何获取两者中出现的值的索引?例如,
a = [1, 2, 3, 4, 5]
b = [9, 7, 6, 5, 1, 0]
return_indices_of_a(a, b)
将返回[0,4],并返回(a[0],a[4]) = (1,5)。
【问题讨论】:
-
我不认为这个问题与那个问题重复,即使它可能相似。
对于两个列表 a 和 b,如何获取两者中出现的值的索引?例如,
a = [1, 2, 3, 4, 5]
b = [9, 7, 6, 5, 1, 0]
return_indices_of_a(a, b)
将返回[0,4],并返回(a[0],a[4]) = (1,5)。
【问题讨论】:
对于较大的列表,这可能会有所帮助:
for item in a:
index.append(bisect.bisect(b,item))
idx = np.unique(index).tolist()
一定要导入 numpy。
【讨论】:
最好的方法是将b 设为set,因为您只检查其中的成员身份。
>>> a = [1, 2, 3, 4, 5]
>>> b = set([9, 7, 6, 5, 1, 0])
>>> [i for i, item in enumerate(a) if item in b]
[0, 4]
【讨论】:
[0, 2, 0, 1, 2] 或类似的东西吗? (因为b 的所有项目都出现在两个列表中)
indices 将给出array(a)[indices] = b。我已经编辑了这个问题。也许那里的描述更清楚。
def return_indices_of_a(a, b):
b_set = set(b)
return [i for i, v in enumerate(a) if v in b_set]
【讨论】: