Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah `random.shuffle` Python Mengembalikan `Tiada`?

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

Patricia Arquette
Lepaskan: 2024-12-09 09:20:07
asal
183 orang telah melayarinya

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

Python's Random Shuffle: Mengapa Pulangan Tidak Jelas?

Apabila menggunakan fungsi random.shuffle Python, seseorang mungkin bingung melihatnya kembali Tiada. Tingkah laku ini berpunca daripada sifat di tempatnya.

Tidak seperti fungsi yang mengembalikan struktur data yang diubah selepas pengubahsuaian, random.shuffle mengubah terus senarai input. Oleh itu, ia mengembalikan Tiada untuk menunjukkan bahawa tiada nilai eksplisit dikembalikan.

Untuk menggambarkan, pertimbangkan kod berikut:

x = ['foo', 'bar', 'black', 'sheep']
random.shuffle(x)
print(x)
Salin selepas log masuk

Setelah melaksanakan kod ini, senarai x akan dikocok dalam -tempat, tetapi fungsi random.shuffle itu sendiri tidak akan mengembalikan sebarang nilai. Akibatnya, penyata cetakan akan mengeluarkan senarai yang kini dikocok.

Jika anda inginkan senarai baru yang dikocok tanpa mengubah suai yang asal, anda boleh menggunakan kaedah alternatif:

  • random.sample(x, len(x)): Mencipta senarai baru yang dikocok secara rawak dengan mensampel nilai daripada senarai asal.
  • kocok = diisih(x, key=lambda k: random.random()): Menggunakan pengisihan dengan kunci rawak untuk menjana senarai baharu yang dikocok.

Fahami bahawa walaupun random.sample mempunyai kerumitan O(N), diisih mempunyai kerumitan O(N log N) disebabkan kepada operasi pengisihan yang mendasari.

Dengan memahami gelagat di tempat random.shuffle dan menggunakan kaedah alternatif seperti yang diperlukan, anda boleh mengawal dengan berkesan cara anda mengendalikan operasi shuffle senarai dalam Python.

Atas ialah kandungan terperinci Mengapakah `random.shuffle` Python Mengembalikan `Tiada`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan