Câu hỏi này đang cố gắng giải quyết một vấn đề sai cách.
Những gì bạn đang thử ở đây là để có được tất cả các hoán vị có thể của các yếu tố của hai danh sách đã cho. Điều này có thể dễ dàng đạt được bằng cách sử dụng
# Understanding the Python zip[] function
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
print[list[zip[list_a, list_b]]]
# Returns: [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]
1>>> from itertools import product
>>> list[product[range[2], range[5]]]
[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4]]
>>> list[product[range[2], range[2]]]
[[0, 0], [0, 1], [1, 0], [1, 1]]
>>> list[product[range[2], range[2], range[3]]]
[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2]]
Trong bài đăng này, bạn sẽ học cách sử dụng danh sách Python to ZIP, bao gồm cách zip hai hoặc nhiều danh sách trong Python. Cụ thể, bạn sẽ học cách zip hai danh sách Python, ZIP ba hoặc nhiều danh sách, danh sách các độ dài khác nhau và danh sách danh sách.
- Hàm Zip Python là gì?
- Cách zip hai danh sách trong Python
- Cách zip 3 [hoặc nhiều hơn] danh sách trong Python
- Cách zip danh sách các độ dài khác nhau trong Python
- Cách zip danh sách danh sách trong Python
- Sự kết luận
- Tài nguyên bổ sung
Hàm Zip Python là gì?
Cách zip hai danh sách trong Python
Cách zip 3 [hoặc nhiều hơn] danh sách trong Python
Cách zip danh sách các độ dài khác nhau trong Python
# Understanding the Python zip[] function
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
print[list[zip[list_a, list_b]]]
# Returns: [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]
Cách zip danh sách danh sách trong Python
# What is a zip object?
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
zipped = zip[list_a, list_b]
print[zipped]
# Returns:
Sự kết luận
Chức năng Python & nbsp; ________ 12 & nbsp; là một hàm tích hợp, trả về một đối tượng tererator chứa các bộ dữ liệu, mỗi trong đó chứa một loạt các nhóm chứa các phần tử từ mỗi đối tượng có thể.
Bây giờ, định nghĩa này là một chút phức tạp. Có thể hữu ích khi nghĩ về & nbsp; ________ 12 & nbsp; có chức năng kết hợp hai hoặc nhiều danh sách [hoặc các đối tượng khác có thể lặp lại] vào một đối tượng chứa các bộ dữ liệu được đặt hàng từ danh sách.
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
zipped = zip[list_a, list_b]
zipped_list = list[zipped]
print[zipped_list]
# Returns: [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]
Ví dụ: bạn đã đưa ra hai danh sách: & nbsp; ____ 14, trong đó có chứa & nbsp; ________ 15 & nbsp; và & nbsp; Nếu bạn đã zip hai danh sách này, bạn sẽ lấy lại như sau:
Bây giờ, bạn có thể nhận thấy rằng chúng tôi đã gói hàm zip [] với chức năng & nbsp; ________ 18 & nbsp; Lý do cho điều này là chức năng zip thực sự trả về A & nbsp; ________ 19 & nbsp; đối tượng. Chúng tôi có thể xác nhận điều này bằng cách kiểm tra loại này:
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
zipped = zip[list_a, list_b]
for item in zipped:
print[item]
Hàm zip có bất kỳ số lượng đối tượng có thể lặp lại và sẽ zip chúng lại với nhau. Tuy nhiên, một cái gì đó cần lưu ý: & nbsp; chức năng zip tích hợp sẽ tối đa với chiều dài của số ít nhất được cung cấp. Bởi vì điều này, nếu một danh sách chứa 5 phần tử và một danh sách khác chứa một triệu - đối tượng ZIP thu được sẽ chỉ chứa 5 mục. Sau đó trong bài đăng này, chúng tôi sẽ khám phá cách làm việc với các danh sách kéo dài các độ dài khác nhau.
[1, 'a']
[2, 'b']
[3, 'c']
[4, 'd']
Zipping hai danh sách trong Python là một điều rất dễ làm. Chức năng chăm sóc hầu hết mọi thứ, không có nhiều đầu vào của người dùng. Về cơ bản, chức năng & nbsp; ________ 12 & nbsp; sẽ chấp nhận bất kỳ số lượng giao dịch nào.
Cách zip 3 [hoặc nhiều hơn] danh sách trong Python
Cách zip danh sách các độ dài khác nhau trong Python
Cách zip danh sách danh sách trong Python
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
list_c = [99, 88, 77, 66]
zipped = zip[list_a, list_b, list_c]
zipped_list = list[zipped]
print[zipped_list]
# Returns: [[1, 'a', 99], [2, 'b', 88], [3, 'c', 77], [4, 'd', 66]]
Sự kết luận
Cách zip danh sách các độ dài khác nhau trong Python
Danh sách zipping các độ dài không bằng nhau hoặc khác nhau dẫn đến một đối tượng zip dài hơn là có thể đi ngắn nhất trong các mục được truyền vào. Điều này có nghĩa là nếu bạn chuyển trong danh sách dài 5 mục và một danh sách khác là một triệu Các mục dài, bạn sẽ kết thúc với một mục zip có chứa năm mục.
Hãy để xác minh điều này bằng cách kéo hai danh sách các độ dài khác nhau:
list_short = list[range[5]]
list_long = list[range[1000000]]
zipped = zip[list_short, list_long]
zipped_list = list[zipped]
print[zipped_list]
# Returns: [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
Bây giờ, đây có thể không phải là những gì bạn muốn xảy ra. Vì lý do này, gói tích hợp & nbsp; ________ 25 & nbsp; đi kèm với A & nbsp; ____ ____ 26 & nbsp; function.
Hãy để xem những gì & nbsp; ____ ____ 26 & nbsp; chức năng trông giống như:
itertools.zip_longest[*iterables, fillvalue=Nona]
Hàm có bất kỳ số lượng lặp lại cũng như tùy chọn & nbsp; ________ 28. Bất kỳ giá trị nào không có một mục zip tương ứng đều được lấp đầy với điều này & nbsp; ________ 28.
Hãy để xem cách thức hoạt động của nó trong thực tế. Chúng tôi đã giành được công việc với một danh sách mà một triệu vật phẩm, nhưng có lẽ một cái gì đó hợp lý hơn một chút:
from itertools import zip_longest
numbers = [1,2,3,4,5]
names = ['nik', 'datagy', 'james']
zipped = zip_longest[numbers, names, fillvalue='missing']
zipped_list = list[zipped]
print[zipped_list]
# Returns: [[1, 'nik'], [2, 'datagy'], [3, 'james'], [4, 'missing'], [5, 'missing']]
Bây giờ bạn đã học được cách làm việc với các danh sách các độ dài khác nhau và có thể zip chúng đúng cách.
Cách zip danh sách danh sách trong Python
Cuối cùng, hãy để Lừa xem cách zip danh sách danh sách. Giả sử bạn đã đưa ra một danh sách các danh sách chứa hai danh sách: & nbsp; ________ 30 và bạn muốn biến nó thành danh sách có khóa kéo sau:
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
zipped = zip[list_a, list_b]
zipped_list = list[zipped]
print[zipped_list]
# Returns: [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]
1.Python đi kèm với một cách tiện dụng để & nbsp; unpack & nbsp; đối tượng. Điều này có thể rất hữu ích khi bạn không biết có bao nhiêu mục mà một đối tượng có. Hãy để xem cách thức hoạt động của nó trong thực tế:
# Understanding the Python zip[] function
list_a = [1,2,3,4]
list_b = ['a', 'b', 'c', 'd']
print[list[zip[list_a, list_b]]]
# Returns: [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]
0Trong ví dụ trên, Python:
- Đầu tiên giải nén từng mục của danh sách bên ngoài, do đó trả về hai danh sách bên trong.
- Sau đó, các danh sách này sau đó được nén.
- Cuối cùng, đối tượng zip được biến thành một danh sách.
Sự kết luận
Trong bài đăng này, bạn đã học cách zip hai hoặc nhiều danh sách Python. Bạn cũng đã học cách làm việc với các danh sách có độ dài [không đồng đều] khác nhau cũng như với danh sách danh sách.
Để tìm hiểu thêm về Python & nbsp; ________ 12 & nbsp; chức năng, hãy xem & nbsp; tài liệu chính thức ở đây. Để tìm hiểu thêm về itertool từ & nbsp; ________ 33 & nbsp; chức năng, hãy xem & nbsp; tài liệu chính thức ở đây.
Tài nguyên bổ sung
Để tìm hiểu thêm về các chủ đề liên quan, hãy xem các hướng dẫn dưới đây:
- Danh sách Python: Tổng quan đầy đủ
- Chỉ số danh sách Python: Tìm đầu tiên, cuối cùng hoặc tất cả các lần xuất hiện
- Tìm bản sao trong danh sách Python
- Python: Chọn phần tử ngẫu nhiên từ danh sách