Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah Perubahan kepada Satu Subsenarai Mempengaruhi Semua Subsenarai dalam Senarai Python Senarai Dicipta Menggunakan `[x] * n`?

Mengapakah Perubahan kepada Satu Subsenarai Mempengaruhi Semua Subsenarai dalam Senarai Python Senarai Dicipta Menggunakan `[x] * n`?

Linda Hamilton
Lepaskan: 2025-01-05 10:59:41
asal
316 orang telah melayarinya

Why Do Changes to One Sublist Affect All Sublists in a Python List of Lists Created Using `[x] * n`?

Senarai Senarai: Perubahan Tidak Dijangka Merentas Subsenarai Dijelaskan

Dalam Python, apabila membuat senarai senarai, menggunakan [x] * n akan menghasilkan senarai dengan berbilang rujukan kepada senarai asas yang sama. Tingkah laku ini boleh membawa kepada perubahan yang tidak dijangka dalam semua subsenarai apabila mengubah suai nilai dalam satu subsenarai.

Sebagai contoh, pertimbangkan kod berikut:

xs = [[1] * 4] * 3
Salin selepas log masuk

Kod ini mencipta senarai senarai, di mana setiap satu subsenarai merujuk senarai asas yang sama bagi empat 1s. Apabila kita menukar salah satu elemen dalam subsenarai:

xs[0][0] = 5
Salin selepas log masuk

Perubahan ditunjukkan pada semua subsenarai. Ini berlaku kerana senarai asal senarai hanya mempunyai tiga rujukan kepada subsenarai asas yang sama, bukan tiga subsenarai yang berbeza.

Untuk mencipta subsenarai berasingan dengan nilai yang berbeza, anda boleh menggunakan pemahaman senarai:

xs = [[1] * 4 for _ in range(3)]
Salin selepas log masuk

Dalam kes ini, pemahaman senarai mencipta senarai baharu empat 1 untuk setiap elemen dalam senarai senarai baharu, menghasilkan tiga yang berbeza subsenarai.

Atas ialah kandungan terperinci Mengapakah Perubahan kepada Satu Subsenarai Mempengaruhi Semua Subsenarai dalam Senarai Python Senarai Dicipta Menggunakan `[x] * n`?. 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