Copying a List

Ba'zida siz ro'yxatni nusxalashni xohlaysiz.

Ro'yxatni Nusxalash

Ba'zida siz ro'yxatni nusxalashni xohlaysiz. Ro'yxatingizni nusxalashning oddiy usullaridan biri copy metodidan foydalanishdir:

>>> my_list = [1, 2, 3]
>>> new_list = my_list.copy()
>>> new_list
[1, 2, 3]

Bu muvaffaqiyatli ravishda yangi ro'yxat yaratadi va uni new_list o'zgaruvchisiga tayinlaydi.

Ammo, buni amalga oshirganingizda, siz “siyoh nusxasi” deb ataladigan narsani yaratmoqdasiz. Bu degani, agar ro'yxatdagi o'zgartiriladigan (mutable) ob'ektlar bo'lsa, ularni o'zgartirish natijasida ikkala ro'yxatga ham ta'sir qiladi. Masalan, agar sizning ro'yxatingizda bir lug'at (dictionary) bo'lsa va lug'at o'zgartirilsa, ikkala ro'yxat ham o'zgaradi, bu esa siz xohlamagan holat bo'lishi mumkin. Siz lug'atlar haqida 8-bobda bilib olasiz.

>>> my_list = [1, 2, 3]
>>> new_list = my_list.copy()
>>> my_list
[1, 2, 3]
>>> new_list
[1, 2, 3]

Siz ro'yxatni nusxalash uchun bu qiziq sintaksisni ham ishlatishingiz mumkin:

>>> my_list = [1, 2, 3]
>>> new_list = my_list[:]
>>> new_list
[1, 2, 3]

Ushbu misol Python ga 0 (birinchi) elementdan oxirigacha kesim yaratishni aytmoqda, bu esa butun ro'yxatni beradi.

Oxirida, siz Python ning list() funksiyasidan foydalanib ham ro'yxatni nusxalashingiz mumkin:

>>> my_list = [1, 2, 3]
>>> new_list = list(my_list)
>>> new_list
[1, 2, 3]

Qanday usulni tanlaysiz, [:], copy() yoki list() bilan ro'yxatni nusxalash, uchalasi ham siyoh nusxasini yaratadi. Bir ro'yxatni o'zgartirish, nusxalangan ro'yxatga ta'sir qilishi kabi g'alati muammolarga duch kelmaslik uchun, siz copy modulidan deepcopy metodidan foydalanishingiz kerak.

Ushbu sahifada

Xato haqida xabar berish