Toán tử giải nén trong Python là gì?

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(đỏ)

Tự mình thử »

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(đỏ)

Tự mình thử »

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

Giải nén trong Python là gì?

Giải nén trong Python đề cập đến một thao tác bao gồm việc gán một giá trị có thể lặp lại cho một bộ (hoặc danh sách ) biến trong một câu lệnh gán. As a complement, the term packing can be used when we collect several values in a single variable using the iterable unpacking operator, * .

Toán tử đóng gói và giải nén trong Python là gì?

Cả \* và \*\* đều là toán tử thực hiện đóng gói và giải nén trong Python. Chúng ta có thể sử dụng toán tử \* (thường được kết hợp với args) với bất kỳ lần lặp nào (chẳng hạn như bộ dữ liệu, danh sách và chuỗi), trong khi toán tử \*\*, (thường được kết hợp với kwargs) chỉ có thể được sử dụng trên từ điển.

Đóng gói và giải nén là gì?

Hàm pack lấy một danh sách các giá trị sẽ được đóng gói làm đối số thứ hai và trả về một chuỗi ký tự vô hướng chứa các giá trị được đóng gói. Hàm giải nén lấy một chuỗi ký tự chứa các giá trị sẽ được giải nén làm đối số thứ hai và trả về danh sách các giá trị riêng lẻ được trích xuất từ ​​chuỗi

Sự khác biệt giữa đóng gói và giải nén trong Python là gì?

Đóng gói Tuple đề cập đến việc gán nhiều giá trị vào một Tuple. Giải nén bộ dữ liệu đề cập đến việc gán một bộ dữ liệu thành nhiều biến