Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `random.shuffle()` Python Mengembalikan `Tiada`?

Mengapakah `random.shuffle()` Python Mengembalikan `Tiada`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-26 14:31:10778semak imbas

Why Does Python's `random.shuffle()` Return `None`?

Mengocok Senarai dalam Python: Membongkar Enigmatic None Return

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.

Sebuah Urusan Di Tempat

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.

Menyaksikan Kocok

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().

Mencipta Senarai Kocok Baharu

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.

Kesimpulan

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!

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