Tutorial Python untuk bukan pengatur cara/Tambahan tentang List: Perbezaan antara semakan

Kandungan dihapus Kandungan ditambah
Algazel (bincang | sumb.)
kembang terjemahan
Algazel (bincang | sumb.)
bab selesai
Baris 163:
[[1, 2, 3], [4, 12, 6]]
 
Perhatikan, pertama sekali, bahawa <code>a</code> ialah senarai yang mengandungi senarai. Kemudian perhatikan apabila <code>b[0][1] = 10</code> dilaksanakn, kedua-dua <code>a</code> dan <code>b</code> diubah, akan tetapi <code>c</code> tidak berubah. Ini berlaku kerana tatasusunan dalaman masih kekal sebagai rujukan apabila operator hirisan digunakan. Walau bagaimanapun dengan <code>deepcopy</code>, <code>c</code> disalin sepenuhnya.
First of all notice that <code>a</code> is a list of lists. Then notice
that when <code>b[0][1] = 10</code> is run both <code>a</code> and <code>b</code> are
changed, but <code>c</code> is not. This happens because the inner arrays
are still references when the slice operator is used. However with
<code>deepcopy</code> <code>c</code> was fully copied.
 
Jadi, perlukah saya risau tentang rujukan setiap kali saya menggunakan fungsi atau <code>=</code>? Berita baiknya ialah anda hanya perlu risaukan tentang rujukan apabila menggunakan kamus dan senarai. Nombor dan rentetan mencipta rujukan apabila diumpukkan akan tetapi setiap operasi terhadap nombor dan rentetan yang mengubah mereka akan mencipta salinan baru dan dengan itu anda akan tidak boleh menukarnya tanpa disangka-sangka. Anda perlu berfikir tentang rujukan jika mengubah sebuah senarai ataupun sebuah kamus.
So, should I worry about references every time I use a function or
<code>=</code>? The good news is that you only have to worry about
references when using dictionaries and lists. Numbers and strings
create references when assigned but every operation on numbers and
strings that modifies them creates a new copy so you can never modify
them unexpectedly. You do have to think about references when you are
modifying a list or a dictionary.
 
Pada saat ini anad mungkin berfikir mengapa rujukan digunakan. Alasan asanya ialah kelajuan. Membuat rujukan kepada senarai yang mengandungi seribu unsur lebih pantas daripada menyalin kesemua unsur. Alasan yang lagi satu ialah ia membolehkan anda untuk membuat fungsi yang dapat mengubah senarai ataupun kamus yang digunakan sebagai input. Hanya, anda perlu ingat tentang rujukan jika anda berhadapan dengan masalah aneh yang data diubah bila sepatutnya ia tidak berubah.
By now you are probably wondering why are references used at all? The
basic reason is speed. It is much faster to make a reference to a
thousand element list than to copy all the elements. The other reason
is that it allows you to have a function to modify the inputed list
or dictionary. Just remember about references if you ever have some
weird problem with data being changed when it shouldn't be.
 
<!-- On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: -->