Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách toán tử lặp lại (*) làm việc trên list trong Python?


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)]