Rumah > Artikel > pembangunan bahagian belakang > Mengapakah `random.shuffle()` Python Mengembalikan `Tiada`?
Apabila menyelidiki kedalaman modul rawak Python, seseorang mungkin tersandung pada tingkah laku yang membingungkan random.shuffle( ). Bertentangan dengan jangkaan, fungsi ini nampaknya mengembalikan nilai Tiada halus selepas kononnya merombak senarai. Untuk merungkai teka-teki ini, mari kita mulakan perjalanan ke dalam kerja dalaman random.shuffle.
Bertentangan dengan konvensyen mengembalikan struktur data yang diubah suai, random.shuffle () memilih jalan yang lebih misteri. Ia mengubah senarai yang digunakan secara senyap, tanpa sebarang bukti nyata tindakannya. Pengubahsuaian halus ini, yang dikenali sebagai "pengubahsuaian di tempat", merupakan ciri utama banyak kaedah API Python yang mengubah suai struktur data. Oleh itu, random.shuffle() mengembalikan Tiada, meninggalkan senarai yang dikocok tanpa sebarang pengesahan yang jelas.
Untuk menyaksikan kerja random.shuffle(), pertimbangkan perkara berikut kod:
x = ['foo', 'bar', 'black', 'sheep'] from random import shuffle random.shuffle(x) print(x)
Melaksanakan kod ini akan mencetak senarai yang dikocok, mendedahkan hasil kerja halimunan random.shuffle().
Walau bagaimanapun, jika keinginan anda bukan semata-mata untuk menyaksikan perubahan senarai tetapi untuk mencipta senarai baru yang dikocok , jalan lain menanti anda. Random.sample() sedia untuk disiarkan, menyediakan cara untuk menjana salinan kocok senarai sedia ada sambil membiarkan yang asal tidak disentuh:
shuffled_x = random.sample(x, len(x))
Sebagai alternatif, sorted() digabungkan dengan tawaran random.random() laluan lain ke senarai yang dikocok, walaupun dengan kos pengiraan:
shuffled_x = sorted(x, key=lambda k: random.random())
Kedua-dua pendekatan menghasilkan salinan senarai anda yang dikocok, membolehkan anda memanipulasi senarai baharu tanpa mengganggu senarai asal.
Gelagat pelik fungsi random.shuffle() mungkin pada mulanya menimbulkan kerisauan, tetapi memahami sifat pengubahsuaian di tempatnya dan meneroka pendekatan alternatif untuk mencipta senarai dikocok baharu memperkasakan anda untuk memanfaatkan sihir rawaknya dengan berkesan.
Atas ialah kandungan terperinci Mengapakah `random.shuffle()` Python Mengembalikan `Tiada`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!