Trong Python a += b không phải luôn luôn hoạt động giống với a = a + b. Trong các điều kiện khác nhau, các toán hạng giống nhau có thể cho ra các kết quả khác nhau.
Xét các ví dụ xử lý list sau:
Nội dung chính
1. Ví dụ 1
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
list1 = [5, 4, 3, 2, 1]
list2 = list1
list1 += [1, 2, 3, 4]
print(list1)
print(list2)
Kết quả in ra là:
[5, 4, 3, 2, 1, 1, 2, 3, 4]
[5, 4, 3, 2, 1, 1, 2, 3, 4]
2. Ví dụ 2
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
list1 = [5, 4, 3, 2, 1]
list2 = list1
list1 = list1 + [1, 2, 3, 4]
# Contents of list1 are same as above
# program, but contents of list2 are
# different.
print(list1)
print(list2)
Kết quả in ra là:
[5, 4, 3, 2, 1, 1, 2, 3, 4]
[5, 4, 3, 2, 1]
– Biểu thức list1 += [1, 2, 3. 4] sẽ sửa đổi danh sách list1 một cách in-place (tại chỗ), điều này có nghĩa là nó sẽ mở rộng cái list – danh sách sao cho “list1” và “list2” vẫn có tham chiếu đến cùng một mảng.
– Biểu thức list1 = list1 + [1, 2, 3, 4] tạo ra một list – danh sách mới và thay đổi tham chiếu của “list1” tới list mới đó, còn “list2” vẫn tham chiếu đến list cũ.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!