Tuy nhiên, trong Python, chúng tôi cũng được phép trích xuất các giá trị trở lại thành các biến. Điều này được gọi là "giải nén"
Thí dụ
Giải nén một tuple
trái cây = ["táo", "chuối", "anh đào"]
[xanh, vàng, đỏ] = trái cây
in[xanh]
in[vàng]
in[đỏ]
Ghi chú. Số lượng biến phải khớp với số lượng giá trị trong bộ, nếu không, bạn phải sử dụng dấu hoa thị để thu thập các giá trị còn lại dưới dạng danh sách
Sử dụng Dấu hoa thị*
Nếu số lượng biến ít hơn số lượng giá trị, bạn có thể thêm ____3 vào tên biến và các giá trị sẽ được gán cho biến dưới dạng danh sách
Thí dụ
Chỉ định phần còn lại của các giá trị dưới dạng danh sách có tên "đỏ"
trái cây = ["táo", "chuối", "anh đào", "dâu tây", "mâm xôi"]
[xanh, vàng, *đỏ] = trái cây
in[xanh]
in[vàng]
in[đỏ]
Nếu dấu hoa thị được thêm vào tên biến khác với tên trước đó, Python sẽ gán giá trị cho biến cho đến khi số lượng giá trị còn lại khớp với số lượng biến còn lại
Mình đang học Leetcode 807. Tăng tối đa để giữ đường chân trời thành phố và tôi gặp đoạn mã sau để nhận cột và hàng tối đa cho lưới 2D đầu vào
Vì vậy, trong câu trả lời chính thức, để có được các giá trị cột tối đa của mỗi cột, đoạn mã sau được sử dụng,
grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
row_maxes = [max[row] for row in grid]
col_maxes = [max[col] for col in zip[*grid]]
print[col_maxes]
Đầu ra là [9, 4, 8, 7]
đúng nhưng tại sao?
Câu trả lời
Thông thường, zip[*var]
được sử dụng để giải nén một số danh sách bộ dữ liệu, vì vậy nó giống như những gì đã được mô tả trong bài đăng này Chức năng Chuyển đổi/Giải nén [nghịch đảo của zip]?
>>> for col in zip[*grid]:
... print[col]
...
[3, 2, 9, 0]
[0, 4, 2, 3]
[8, 5, 6, 1]
[4, 7, 3, 0]
Tuy nhiên, nếu bạn kiểm tra mã này
>>> for col in zip[grid]:
... print[col]
...
[[3, 0, 8, 4],]
[[2, 4, 5, 7],]
[[9, 2, 6, 3],]
[[0, 3, 1, 0],]
Hàm *
trong Python là nó là toán tử giải nén. Và biết thêm chi tiết ở đây Python args và kwargs. làm sáng tỏ
Giải nén với các toán tử Asterisk. * & **
Bây giờ bạn có thể sử dụng *args và **kwargs để xác định các hàm Python có số lượng đối số đầu vào khác nhau. Hãy đi sâu hơn một chút để hiểu thêm về các toán tử giải nén
Các toán tử giải nén dấu hoa thị đơn và kép đã được giới thiệu trong Python 2. Kể từ ngày 3. 5, chúng thậm chí còn trở nên mạnh mẽ hơn nhờ PEP 448. Tóm lại, các toán tử giải nén là các toán tử giải nén các giá trị từ các đối tượng có thể lặp lại trong Python. Toán tử dấu hoa thị đơn * có thể được sử dụng trên bất kỳ lần lặp nào mà Python cung cấp, trong khi toán tử dấu hoa thị kép ** chỉ có thể được sử dụng trên từ điển
Phần kết luận
Việc lấy đi rất dễ dàng, bạn cần biết cách tìm các giá trị lớn nhất trong mảng danh sách 2D của Python trong hai dòng mã. Các