Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah `random.shuffle()` Python mengembalikan `None` dan bukannya senarai yang dikocok?

Mengapakah `random.shuffle()` Python mengembalikan `None` dan bukannya senarai yang dikocok?

DDD
DDDasal
2024-12-07 15:49:16191semak imbas

Why does Python's `random.shuffle()` return `None` instead of the shuffled list?

Mengocok Senarai Objek

Tugas biasa dalam pengaturcaraan ialah mengocok senarai objek. Dalam Python, terdapat fungsi terbina dalam untuk ini: random.shuffle(). Walau bagaimanapun, tingkah lakunya boleh di luar jangkaan jika anda tidak biasa dengan nuansanya.

Soalan

Mengapa random.shuffle(), apabila dipanggil pada senarai objek, kembalikan Tiada dan bukannya yang dikocok list?

Jawapan

random.shuffle() mengubah suai senarai inputnya di tempatnya, bermakna ia tidak mencipta senarai baharu tetapi merombak elemen sedia ada senarai. Akibatnya, ia tidak mempunyai sebarang nilai untuk dikembalikan, oleh itu hasil Tiada. Tingkah laku ini konsisten dengan konvensyen Python untuk objek boleh ubah, di mana fungsi yang mengubah suainya biasanya tidak mengembalikan Tiada.

Contoh

Untuk menunjukkan perkara ini, pertimbangkan kod berikut:

from random import shuffle

l = [[i] for i in range(10)]
shuffle(l)
print(l)

Kod mencipta senarai senarai dan mengocoknya menggunakan shuffle(). Mencetak senarai yang terhasil menunjukkan bahawa ia telah berjaya disusun semula:

[[9], [2], [7], [0], [4], [5], [3], [1], [8], [6]]

Dalam contoh ini, random.shuffle() sememangnya mengubah suai senarai asal di tempatnya, mengembalikan Tiada.

Atas ialah kandungan terperinci Mengapakah `random.shuffle()` Python mengembalikan `None` dan bukannya senarai yang dikocok?. 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