Rumah > pembangunan bahagian belakang > Tutorial Python > Senarai Python: Lulus dengan Nilai atau Rujukan?

Senarai Python: Lulus dengan Nilai atau Rujukan?

Patricia Arquette
Lepaskan: 2024-11-27 18:34:12
asal
989 orang telah melayarinya

Python Lists: Pass by Value or Reference?

Senarai Manipulasi dalam Python: Melepasi Nilai vs. Rujukan

Semasa bekerja dengan senarai dalam Python, satu cabaran biasa ialah konsep lulus dengan merujuk dan memahami cara ia mempengaruhi perubahan senarai. Mari kita terokai senario untuk menggambarkan isu ini:

a = ['help', 'copyright', 'credits', 'license']
b = a
b.append('XYZ')
print(b)  # ['help', 'copyright', 'credits', 'license', 'XYZ']
print(a)  # ['help', 'copyright', 'credits', 'license', 'XYZ']
Salin selepas log masuk

Dalam contoh ini, anda berhasrat untuk menambahkan nilai pada senarai 'b,' tetapi yang menghairankan, nilai senarai 'a' juga berubah. Ini kerana, dalam Python, senarai (dan objek lain) dihantar melalui rujukan, yang bermaksud ia berkongsi lokasi memori yang sama.

Jadi, apabila anda menetapkan 'b' kepada 'a,' anda tidak mencipta senarai baharu tetapi merujuk senarai yang sama. Oleh itu, sebarang perubahan yang dibuat pada satu senarai akan ditunjukkan dalam senarai yang lain.

Cara Meluluskan Nilai

Untuk mengelakkan perubahan yang tidak diingini, anda perlu membuat senarai baharu itu salinan asal. Dalam Python, penghirisan boleh digunakan untuk mencapai perkara ini:

b = a[:]
Salin selepas log masuk

Dengan menggunakan operator hirisan [:] pada senarai 'a,' anda mencipta senarai 'b' baharu yang mengandungi semua elemen 'a' tetapi menduduki lokasi memori yang berasingan. Sekarang, sebarang perubahan yang dibuat kepada 'b' tidak akan menjejaskan 'a.'

Atas ialah kandungan terperinci Senarai Python: Lulus dengan Nilai atau Rujukan?. 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