Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan Python untuk mendapatkan indeks baharu selepas mengisih senarai yang tidak teratur
Untuk senarai, pengisihan adalah sangat mudah. Untuk pengisihan ke hadapan (dari kecil ke besar) gunakan
list.sort()
dan untuk pengisihan terbalik (dari besar ke kecil) gunakan
list.sort(reverse=True)
Tetapi jika anda tidak terhad untuk mendapatkan senarai diisih, anda juga ingin merekod tanda asal seterusnya, kemudian untuk numpy.array, anda boleh menggunakan
np.argsort()
Contohnya, [1,3,2,5,6]
menjadi [1,2 ,3,5 selepas mengisih ,6]
Tetapi jika kita ingin tahu apakah subskrip asal hasil yang diisih (jawapannya ialah [0,2,1,3,4]), kita boleh gunakan np.argsort()
Tetapi jika ia adalah senarai mudah dan anda ingin mencapai kesan ini, anda boleh menggunakan
# 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]
Hasil yang dikembalikan ialah indeks asal
Jika anda ingin mencapai satu dalam tajuk, pergi selangkah lebih jauh , iaitu, untuk mendapatkan subskrip baharu selepas mengisih senarai, contohnya, untuk [1,5,2,8,3,4], anda harus mendapatkan [ 0,4,1,5,2,3]
Kemudian anda boleh menggunakan
# 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
Atas ialah kandungan terperinci Cara menggunakan Python untuk mendapatkan indeks baharu selepas mengisih senarai yang tidak teratur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!