在列表中查找值的索引

时间:2018-08-30 13:07:27

标签: python python-2.7

我正在尝试查找列表中整数的索引。我有一个下面的代码可以工作,但是需要超过45秒。有没有我可以使用的更快的方法?我的代码如下:

for i in range(0,len(output)) :
    indexes = [ii for ii,x in enumerate(Node1ID) if x == i].

2 个答案:

答案 0 :(得分:1)

您不必要Node1ID一遍又一遍地遍历len(output)列表,每次递增您要查找的整数。相反,您应该生成列表的字典,其中要查找的整数是索引,而匹配的索引在相应的子列表中:

indexes = {}
for i, x in enumerate(Node1ID):
    indexes.setdefault(x, []).append(i)

,以便您可以使用以下命令查找整数i的匹配索引列表:

indexes.get(i, [])

答案 1 :(得分:1)

如果您不介意使用numpy:

# Get all the numbers to match (in this case len(output) = 10)
y = np.arange(10)

# Example array
x = [1,1,5,3,11]

y_indices, x_indices = np.where(x == y[:,None])
print(y_indices)
# array([1, 1, 3, 5])
print(x_indices)
# array([0, 1, 3, 2])

输出解释为x[0] == 1x[1] == 1x[3] == 3x[2] == 5