x = y = [1, 2] # tahalluslar yaratilmoqda
print(x is y) # oʻzgaruvchilar bitta roʻyxatni koʻrsatmoqdami
x = [1, 2]
y = [1, 2]
print(x is y)
Roʻyxatlardan ikki hil usulda enusxa olish mumkin. Birinchi usulda – yuzaki nusxa olish. Bunda yangi ob`ekt hosil qilinadi, ammo u original roʻyxat elementlarini oʻz ichiga oladi:
a = [4, 3, [2, 1]]
b = a[:]
print(b is a)
b[2][0] = -100 # bunda a ruyxat oʻzgaradi
print(a)
Ikkinchi usul – chuqur nusxa olishda yangi ob`ekt hosil qilinadi va originaldagi barcha ob`ektlarning nusxalari rekursiv asosda yaratiladi.
import copy
a = [4, 3, [2, 1]]
b = copy.deepcopy(a)
b[2][0] = -100 # bunda a ruyxat oʻzgarmaydi
print(a)
Nusxa olishda bir tomondan roʻyxatlar tahrirlashga imkon beradi, ikkinchi tomondan esa tahallus yaratish yoki yuzaki nusxa olish hisobiga dasturchi roʻyhatlarni oʻzi bilmagan holda oʻzgartirib qoʻyish havfi yuzaga keladi.
Do'stlaringiz bilan baham: |