Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Isih Senarai Senarai dengan Susunan Bercampur?

Bagaimana untuk Isih Senarai Senarai dengan Susunan Bercampur?

Linda Hamilton
Linda Hamiltonasal
2024-10-21 16:33:29521semak imbas

How to Sort Lists of Lists with Mixed Ordering?

Mengisih Senarai Senarai dengan Susunan Bercampur

Memandangkan senarai senarai dengan dua elemen, menyusunnya dalam susunan tertentu boleh menjadi mencabar. Biasanya, pengisihan dilakukan menggunakan satu kriteria. Walau bagaimanapun, dalam kes ini, kita perlu mengisih berdasarkan elemen pertama dalam tertib menurun dan elemen kedua dalam tertib menaik.

Untuk mencapai pengisihan bercampur ini, kita boleh menggunakan fungsi lambda dan kaedah isihan dalam Python. Hujah utama kaedah isihan mengambil fungsi yang menentukan susunan isihan. Fungsi yang kami sediakan akan mempertimbangkan kedua-dua elemen setiap senarai.

Untuk mencipta kunci gabungan yang mengendalikan kedua-dua elemen, kita boleh menggunakan fungsi lambda berikut:

<code class="python">lambda k: (k[0], -k[1])</code>

Di sini, kami menggunakan tuple untuk menggabungkan kedua-dua elemen. Elemen pertama mewakili elemen pertama senarai, dan elemen kedua ialah negatif elemen kedua. Penafian ini memastikan tertib menurun untuk elemen kedua.

Sekarang, kita boleh menggunakan fungsi lambda ini dalam kaedah isihan:

<code class="python">L.sort(key=lambda k: (k[0], -k[1]), reverse=True)</code>

Argumen terbalik=True menentukan bahawa pengisihan harus dilakukan dalam susunan terbalik, yang sejajar dengan keperluan kami untuk tertib menurun untuk elemen pertama.

Hasilnya, senarai L akan diisih dengan elemen pertama menurun dan elemen kedua menaik:

<code class="python">[['b', 1], ['b', 2], ['b', 3], ['a', 1], ['a', 2], ['a', 3]]</code>

Atas ialah kandungan terperinci Bagaimana untuk Isih Senarai Senarai dengan Susunan Bercampur?. 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