Jika saya memiliki daftar, [a,b,c,d,e]
bagaimana cara menyusun ulang item dengan cara yang sewenang-wenang [d,c,a,b,e]
?
Edit: Saya tidak ingin mengacaknya. Saya ingin memesan ulang dengan cara yang telah ditentukan sebelumnya. (misalnya, saya tahu bahwa elemen ke-3 di daftar lama harus menjadi elemen pertama di daftar baru)
Jawaban:
Anda bisa melakukannya seperti ini
sumber
mylist[:] = [mylist[i] for i in myorder]
sumber
sumber
Apakah urutan terakhir ditentukan oleh daftar indeks?
edit: meh. AJ lebih cepat ... Bagaimana cara menyusun ulang daftar dengan python?
sumber
sumber
Anda dapat memberikan fungsi sortir Anda sendiri untuk
list.sort()
:sumber
Jika Anda menggunakan numpy, ada cara yang tepat untuk melakukannya:
Kode ini mengembalikan:
sumber
Jika Anda tidak terlalu peduli dengan efisiensi, Anda dapat mengandalkan pengindeksan array numpy untuk membuatnya elegan:
sumber
Dari pemahaman saya tentang pertanyaan Anda, tampaknya Anda ingin menerapkan permutasi yang Anda tentukan pada a
list
. Ini dilakukan dengan menentukan yang lainlist
(sebut sajap
) yang memegang indeks dari elemen aslilist
yang harus muncul di permutasilist
. Anda kemudian menggunakanp
untuk membuat barulist
dengan hanya mengganti elemen di setiap posisi dengan yang indeksnya ada di posisi itup
.Ini cetakan
['d', 'c', 'a', 'b', 'e']
.Ini sebenarnya membuat yang baru
list
, tetapi dapat dimodifikasi dengan mudah untuk mengubah aslinya "di tempat".sumber
Satu hal lagi yang bisa diperhatikan adalah tafsir lain yang ditunjukkan oleh darkless
Kode dengan Python 2.7
Terutama:
Susun ulang menurut indeks
Ini akan mencetak ['c', 'd', 'b', 'a', 'e']
sumber
sumber
Inilah yang saya gunakan ketika saya menemukan masalah ini.
EX: untuk huruf kecil
Ini hanya menggeser daftar ke indeks tertentu
sumber