python 寻找可迭代(list)的目标元素的下表方法
python中sorted()排序后返回同时返回下标
nums = [4, 1, 5, 2, 9, 6, 8, 7] sorted_nums = sorted(enumerate(nums), key=lambda x: x[1]) idx = [i[0] for i in sorted_nums] nums = [i[1] for i in sorted_nums]
除了使用 emuerate()函数外,还可以使用zip()
nums = [4, 1, 5, 2, 9, 6, 8, 7] idenx = list(range(len(nums))) sorted_nums = zip(idenx,nums) sorted_nums = sorted(enumerate(nums), key=lambda x: x[1]) idx = [i[0] for i in sorted_nums] nums = [i[1] for i in sorted_nums]
两者本质是一样的
另外一种方法是将list转化为numpy,这样就可以使用numpy的内置函数np.where()
注意np.where返回的数据格式,返回的是2个array数组,一个存放的是1维坐标,另一个存放的二维坐标,这里的A是二维,如果n维会生成n个array。
或者是np.argmax() 函数