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

WBOY
Lepaskan: 2023-05-09 23:05:28
ke hadapan
1806 orang telah melayarinya

Untuk senarai, pengisihan adalah sangat mudah. Untuk pengisihan ke hadapan (dari kecil ke besar) gunakan

list.sort()
Salin selepas log masuk

dan untuk pengisihan terbalik (dari besar ke kecil) gunakan

list.sort(reverse=True)
Salin selepas log masuk

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()
Salin selepas log masuk

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]
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan