목록의 경우 정렬이 매우 간단합니다. 정방향 정렬(작은 것에서 큰 것 순)에는
list.sort()
를 사용하고, 역방향 정렬(큰 것에서 작은 것 순)에는
list.sort(reverse=True)
를 사용하세요. 그러나 정렬된 목록을 얻는 데 국한되지 않고 원본 아래 첨자를 기록하려는 경우에도 마찬가지입니다. , numpy.array의 경우
np.argsort()
를 사용할 수 있습니다. 예를 들어 [1,3,2,5,6]
정렬하면 [1,2,3,5,6]
이 됩니다. 하지만 우리는 정렬된 결과가 원본에 해당하는지 알고 싶습니다. 아래 첨자는 무엇입니까(답은 [0,2,1,3,4]), np.argsort()
를 사용할 수 있습니다. 하지만 간단하다면 목록에서 이 효과를 얻으려면
# enumerate(x)会自动构造一个tuple(a,b) # 其中a是index,b是list里index下标对应的具体的值,后面的x是代表一个虚拟变量,即tuple(a,b) sorted_list = sorted(enumerate(list), key=lambda x:x[1]) # x[1]是因为在enumerate(a)中,a数值在第1位 result = [x[0] for x in sorted_list]
를 이렇게 사용할 수 있습니다. 반환된 결과는 원본 인덱스입니다
제목에 있는 내용을 구현하려면 한 단계 더 나아가십시오. 목록을 정렬한 후 새 첨자를 사용하세요. 예를 들어 [1,5,2,8,3,4]의 경우 [0,4,1,5,2,3]
그러면 사용할 수 있습니다
# enumerate(x)会自动构造一个tuple(a,b) # 其中a是index,b是list里index下标对应的具体的值,后面的x是代表一个虚拟变量,即tuple(a,b) # sorted_list = [(0,1),(2,2),(4,3),(5,4),(1,5),(3,8)] sorted_list = sorted(enumerate(list), key=lambda x:x[1]) # x[1]是因为在enumerate(a)中,a数值在第1位 for i in range(len(sorted_list)): list[sorted_list[i][1]] = i
위 내용은 Python을 사용하여 무질서한 목록을 정렬한 후 새 색인을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!