Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Cekap Mencari Indeks Nilai Maks/Min dalam Senarai Python?

Bagaimana untuk Cekap Mencari Indeks Nilai Maks/Min dalam Senarai Python?

Barbara Streisand
Barbara Streisandasal
2024-10-29 18:24:14634semak imbas

 How to Efficiently Find the Index of Max/Min Values in Python Lists?

Mendapatkan Indeks Nilai Maks/Min Dikembalikan oleh max()/min() pada Senarai

Apabila menggunakan max() Python dan min() berfungsi pada senarai untuk algoritma seperti minimax, menentukan indeks nilai maksimum atau minimum yang dikembalikan selalunya diperlukan.

Masalah:

Anda perlu mencari indeks elemen dalam senarai yang sepadan dengan nilai max() atau min() yang dikembalikan, untuk mengenal pasti pergerakan yang menghasilkan nilai tersebut.

Penyelesaian:

Kepada dapatkan semula indeks nilai min(), gunakan kod berikut:

<code class="python">index_min = min(range(len(values)), key=values.__getitem__)</code>

Kaedah ini menghapuskan keperluan untuk modul seperti operator atau enumerate, dan ia juga mengatasi penyelesaian yang melibatkan itemgetter().

Untuk tatasusunan numpy, pertimbangkan untuk menggunakan:

<code class="python">import numpy as np
index_min = np.argmin(values)</code>

Ini lebih pantas jika senarainya cukup besar dan penggunaan memori boleh diterima.

Tanda Aras:

Tanda aras di bawah membandingkan kecekapan dua penyelesaian yang dicadangkan:

[Imej menunjukkan graf dengan masa jalan untuk kaedah yang berbeza]

Garis biru mewakili penyelesaian Python tulen, manakala garis merah menggunakan numpy. Garis hitam ialah pelaksanaan rujukan menggunakan itemgetter().

Untuk senarai besar, penyelesaian numpy adalah lebih pantas. Walau bagaimanapun, untuk senarai yang lebih kecil, penyelesaian Python tulen mungkin lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Indeks Nilai Maks/Min dalam Senarai Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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