我正在尝试查找列表中整数的索引。我有一个下面的代码可以工作,但是需要超过45秒。有没有我可以使用的更快的方法?我的代码如下:
for i in range(0,len(output)) :
indexes = [ii for ii,x in enumerate(Node1ID) if x == i].
答案 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] == 1
,x[1] == 1
,x[3] == 3
,x[2] == 5