Khi toán hạng trái của * là list, nó trở thành repetition operator. Tạo nhiều bản sao của list và nối lại. List có thể tạo bằng *.
Ví dụ
numbers = [0] * 5 print(numbers) # [0, 0, 0, 0, 0]
[0] list 1 phần tử. Toán tử lặp tạo 5 bản sao nối thành list đơn. Ví dụ nhiều phần tử:
Ví dụ
numbers = [0, 1, 2] * 3 print(numbers) # [0, 1, 2, 0, 1, 2, 0, 1, 2]
Cảnh báo: Python tạo shallow copies. Thay đổi object mutable tại một chỗ sẽ ảnh hưởng tất cả chỗ lặp. Nếu không muốn hành vi này, đừng dùng * để tạo list chứa object mutable.
# Sai: tạo 3 tham chiếu đến CÙNG MỘT list con matrix = [[0]*3] * 3 matrix[0][0] = 1 print(matrix) # [[1, 0, 0], [1, 0, 0], [1, 0, 0]] ← tất cả hàng 0 đều đổi! # Đúng: list comprehension tạo list con riêng biệt matrix = [[0]*3 for _ in range(3)]