Copy a list trong Python


Hôm nay ta sẽ học cách copy 1 list trong python. Ta xem đoạn code bên dưới.

my_list1 = [1,2,3]

copy_list1 = my_list1  # gán my_list1 vào copy_list1
copy_list1[0] = "Copy"  # thay đổi giá trị

print(copy_list1)  # ["Copy",2,3]  # copy_list1 thay đổi
print(my_list1)  # ["Copy",2,3]  
# my_list1 cũng thay đổi. Vậy tại sao my_list1 thay đổi theo.

Ta thấy my_list1 thay đổi theo chứng tỏ cả my_list1 và copy_list1 đều cùng trỏ về cùng 1 giá trị. Ta thử kiểm tra xem my_list1 và copy_list1 có phải trỏ về cùng 1 giá trị hay không.

print(my_list1 is copy_list1)  # True

Vậy thì ta thấy my_list1 và copy_list1 thực chất là 1. Vậy làm sao để copy một list trong Python?. Ta dùng cách sau.

my_list2 = [1,2,3]

copy_list2 = my_list2[:]  
# my_list2[:] lấy hết các phần tử của my_list2
# và tạo ra 1 list mới gán vào copy_list2

copy_list2[0] = "Copy"
print(copy_list2)  # ["Copy",2,3]
print(my_list2)  # [1,2,3]

print(my_list2 is copy_list2)  # False

Như vậy để copy 1 list trong Python ta dùng my_list2[:].

Ngoài ra để lấy ra 1 số phần tử của list ta làm tương tự.

my_list3 = [1,2,3,4]

# lấy ra index 1 tới index 2
new_list = my_list3[1:3]  
# new_list có giá trị là [2,3] , my_list3 giá trị không đổi
print(new_list)

# lấy ra từ index 1 tới cuối
new_list2 = my_list3[1:]  # [2,3,4]
print(new_list2)

# lấy tất cả phần tử bỏ phần tử cuối
new_list3 = my_list3[0:-1] # [1,2,3]
print(new_list3)

# copy hết 
new_list4 = my_list3[:]
print(new_list4)  # [1,2,3,4]

Như vậy ta đã biết cách copy 1 list trong Python rồi nhé. ^_^