Zip trong Python hoạt động như thế nào?

Hàm zip[] lấy một số iterables và tổng hợp chúng thành một bằng cách kết hợp các giá trị thứ i của mỗi iterable thành một Tuple. Ví dụ: nén các danh sách [1, 2, 3] và [4, 5, 6] thành [[1,4], [2,5], [3,6]]. Bạn có thể giải nén danh sách các bộ dữ liệu này bằng cách gọi zip[*list] sử dụng toán tử giải nén [dấu hoa thị] *

Một iterable là một đối tượng chứa các phần tử mà bạn có thể lặp lại. Ví dụ là danh sách, bộ hoặc bộ

Trước khi tôi giải thích từ từ cho bạn, hãy thử mã trong trình bao tương tác của chúng tôi

Giải trình

Giả sử, bạn có hai danh sách

[1,2,3]
[4,5,6]

Bây giờ bạn nén chúng lại với nhau và nhận danh sách mới

[[1,4], [2,5], [3,6]]

Bạn có thể giải nén chúng bằng thủ thuật sau. Nếu bạn loại bỏ dấu ngoặc ngoài của kết quả [e. g. , thông qua toán tử dấu hoa thị], bạn nhận được ba bộ dữ liệu sau

[1,4]
[2,5]
[3,6]

Khi bạn nén chúng lại với nhau, bạn sẽ có danh sách mới

[[1,2,3], [4,5,6]]

Vì vậy, bạn [gần như] có lại hai danh sách ban đầu của mình

Đây là ý tưởng trong đoạn mã sau

lst_1 = [1, 2, 3]
lst_2 = [4, 5, 6]

# Zip two lists together
zipped = list[zip[lst_1, lst_2]]
print[zipped]
# [[1, 4], [2, 5], [3, 6]]


# Unzip to lists again
lst_1_new, lst_2_new = zip[*zipped]
print[list[lst_1_new]]
print[list[lst_2_new]]

Câu đố. đầu ra của hai câu lệnh in cuối cùng sẽ là gì?

Phần còn lại của bài viết là về việc trả lời bất kỳ câu hỏi nào của bạn về hàm

[[1,4], [2,5], [3,6]]
0

Làm cách nào để nén danh sách có độ dài khác nhau?

Cứ làm đi. Python chỉ cần bỏ qua các phần tử còn lại của danh sách dài hơn. Đây là một ví dụ

print[list[zip[[1,2,3],[1,2]]]]
# [[1, 1], [2, 2]]

Bạn có thể sử dụng Zip với một đối số không?

Có lẽ bạn nhớ rằng tôi đã làm điều này một vài email trước đây để lừa bạn. Cho nên. đúng, bạn có thể làm điều đó. Python vẫn tạo ra một bộ phần tử - chỉ có điều là chỉ có một trong số đó. Do đó, bộ dữ liệu chỉ có một phần tử duy nhất. Đầu ra mặc định của một bộ có một phần tử x là [x,]

print[list[zip[[1,2,3]]]]
# [[1,], [2,], [3,]]

Định dạng đầu ra kỳ lạ này gây ra một số nhầm lẫn. Nhiều sinh viên trong khóa học email miễn phí của tôi tình cờ biết đến nó [hãy tham gia với chúng tôi nếu bạn muốn liên tục cải thiện Python —ngày này qua ngày khác]

Tôi hy vọng rằng bây giờ bạn đã hiểu hoàn toàn rằng đây không phải là một lỗi trong Python mà chỉ là một bộ với một phần tử duy nhất. [Đừng hỏi tôi tại sao họ không sử dụng định dạng '[x]' thay vì '[x,]'. ]

Đối tượng Zip trong Python là gì?

Bạn sẽ nhanh chóng nhận ra rằng kết quả của hàm zip không phải là danh sách cũng không phải là bộ

________số 8

You would expect [[1,3],[2,4]] but the result is “”. That’s weird, isn’t it?

Thật ra là không. Kết quả của hàm zip[] là một iterator. Trình vòng lặp trong Python là một đối tượng chứa một số phần tử cố định và cho phép bạn truy cập từng phần tử theo kiểu có thứ tự [hàm next[iterator] cho một trình vòng lặp]. Điều này hiệu quả hơn và có mục đích chung hơn — so với việc tạo danh sách và kết quả là trả về danh sách

Để khắc phục điều này, bạn phải chuyển đổi đối tượng trình vòng lặp thành đối tượng có thể lặp lại mà bạn muốn [e. g. bộ, danh sách, bộ dữ liệu]

x = [[1,2],[3,4]]
print[list[zip[*x]]]
# [[1, 3], [2, 4]]

Cuối cùng, hãy để tôi làm rõ một điều cuối cùng. toán tử dấu hoa thị được đặt ngay trước lần lặp có thể được giải nén [không phải sau nó hoặc bất kỳ nơi nào khác]. Nếu bạn đặt toán tử dấu hoa thị ở bất kỳ nơi nào khác, Python sẽ nghĩ đó là phép nhân và đưa ra lỗi [trường hợp tốt nhất]

[[1,4], [2,5], [3,6]]
0

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người hoàn toàn mới bắt đầu

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Zip hoạt động như thế nào trong Python?

Hàm zip[] của Python

Zip và giải nén hoạt động như thế nào trong Python?

Toán tử giải nén * sẽ giải nén danh sách các bộ dữ liệu first_and_last_names thành các bộ dữ liệu của nó. Các bộ dữ liệu này sau đó sẽ được chuyển đến hàm zip[], hàm này sẽ lấy các đối tượng có thể lặp lại riêng biệt này [các bộ dữ liệu] và kết hợp các phần tử có cùng chỉ mục của chúng với nhau thành các bộ dữ liệu, tạo thành hai bộ dữ liệu riêng biệt

Python zip có phải là trình tạo không?

Hàm zip[] là không phải là hàm tạo , nó chỉ trả về một trình vòng lặp.

Chủ Đề