Hướng dẫn zip two lists with different length python - nén hai danh sách với python độ dài khác nhau

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

Trong 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

Làm thế nào để tôi zip một danh sách hai với độ dài khác nhau?

Cách bản địa:..
Cố gắng tính toán và làm tròn một nửa chiều dài của danh sách đầu tiên, nếu nó nổi thì cũng thêm 1 ..
Lặp lại bằng Zip () trước khi nhân danh sách Yesno thứ hai với số được tính toán trước ..

Làm thế nào để bạn zip hai danh sách không đồng đều trong Python?

Có thể sử dụng hàm Chuce () từ itertools để lặp lại các giá trị từ danh sách ngắn hơn.Điều này sẽ cho phép zip () lặp lại trên tất cả các yếu tố từ danh sách dài hơn.Trong ví dụ này, chu kỳ () được sử dụng để lặp lại các giá trị từ list_one và danh sách kết hợp kết quả giờ đây sẽ chứa tất cả các giá trị từ list_two.use the cycle() function from itertools to repeat values from the shorter list. This will allow zip() to iterate over all the elements from the longer list. In this example, cycle() is used to repeat values from list_one and the resulting merged list will now contain all values from list_two .

Làm thế nào để tôi lặp lại hai độ dài khác nhau của đồng thời trong Python?

Chúng ta có thể lặp lại danh sách đồng thời theo cách:..
Zip (): Trong Python 3, ZIP trả về một trình lặp.Hàm zip () dừng khi bất kỳ ai trong danh sách tất cả các danh sách bị kiệt sức.Nói một cách đơn giản, nó chạy cho đến nhỏ nhất trong tất cả các danh sách.....
itertools.Zip_Longest (): Zip_Longest dừng khi tất cả các danh sách đã cạn kiệt ..

Bạn có thể zip hai danh sách trong Python không?

Bạn cũng có thể zip hai danh sách trong Python với sự kết hợp của hàm zip () và cho vòng lặp.Đó là phương pháp ít được sử dụng nhất trong đó tập hợp xen kẽ có thể được thực hiện với hàm chuỗi, trong khi tập hợp nội bộ có thể được thực hiện với hàm zip ().. It is the least used method where the interlist aggregation can be done with the chain function, while the intralist aggregation can be done with the zip() function.