Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python untuk mendapatkan indeks baharu selepas mengisih senarai yang tidak teratur

Cara menggunakan Python untuk mendapatkan indeks baharu selepas mengisih senarai yang tidak teratur

WBOY
WBOYke hadapan
2023-05-09 23:05:281808semak imbas

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam