Python zip hai danh sách danh sách

Python có rất nhiều hàm dựng sẵn giúp chúng ta nhanh chóng thực hiện một thuật toán, nếu không sẽ mất nhiều thời gian hơn để tự tạo. Khả năng truy cập của các nội trang này là một phần khiến Python trở thành ngôn ngữ lập trình mạnh mẽ như vậy. Một trong những chức năng hữu ích này là chức năng

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
1

Trong bài viết này, chúng ta sẽ khám phá cách chúng ta có thể nén hai danh sách bằng hàm

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
1 của Python. Chúng ta cũng sẽ xem xét các khái niệm khác như danh sách, bộ dữ liệu và cách sử dụng ký hiệu
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 ít được biết đến hơn, điều này sẽ cho phép chúng ta sử dụng chức năng zip[] một cách đầy đủ nhất

Tổng quan ngắn gọn về danh sách và bộ dữ liệu

Danh sách là một cấu trúc dữ liệu trong Python. Nói chung, trong lập trình, nó được gọi là một mảng. Danh sách chứa một tập hợp các phần tử được sắp xếp. Chúng ta có thể truy cập các phần tử riêng lẻ từ danh sách bằng cách lập chỉ mục. Ví dụ

>>> list_x = [1, 2, 'a', 'b']
>>> list_x[0]
1
>>> list_x[2]
'a'
>>> list_x[1]
2

Ở đây, chúng tôi định nghĩa

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
4 chứa số nguyên và chuỗi. Sau đó, chúng tôi sử dụng cú pháp hiển thị trong ví dụ để lấy một đối tượng từ danh sách. Liệt kê các chỉ mục bắt đầu bằng 0 cho mục đầu tiên trong danh sách. Chúng tôi thậm chí có thể lưu trữ danh sách bên trong danh sách

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]

Bộ dữ liệu là một kiểu dữ liệu khác trong Python rất giống với danh sách. Sự khác biệt là các bộ dữ liệu không thể thay đổi, không giống như danh sách. Điều này có nghĩa là chúng ta không thể thay đổi nội dung trong các bộ dữ liệu sau khi đã xác định. Ví dụ

>>> tuple_x = [1, 2, 3]
>>> tuple_x[0]
1
>>> tuple_x[0] = 1
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment
>>> 
>>> list_x = [1, 2, 'a', 'b']
>>> 
>>> list_x[0] = 100
>>> print[list_x]
[100, 2, 'a', 'b']

Trong ví dụ này, chúng ta thấy rằng các bộ dữ liệu sử dụng dấu ngoặc thay vì dấu ngoặc. Chúng ta có thể lấy các mục từ một tuple giống như chúng ta làm với các danh sách. Tuy nhiên, nếu chúng tôi cố gắng thay đổi các mục trong bộ dữ liệu, chúng tôi sẽ gặp lỗi. Mặt khác, một danh sách cho phép chúng tôi thay đổi các mục của nó

Sử dụng thay thế ký hiệu
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 trong Python

Nếu bạn đã từng làm việc với Python, chắc chắn bạn đã sử dụng ký hiệu dấu hoa thị

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 cho phép nhân. Tuy nhiên, bạn cũng có thể đã thấy ký hiệu
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 được sử dụng trước các biến. Nhưng nó thực sự làm gì?

Toán tử

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 có thể được sử dụng trước một biến trong định nghĩa hàm hoặc gọi hàm. Nó lấy các đối số từ biến [sẽ lưu trữ một lần lặp] và giải nén chúng làm đối số cho hàm. Ví dụ

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
1

Ở đây, chúng ta có một hàm nhận 2 đối số và trả về các đối số đó dưới dạng một bộ. Với việc sử dụng toán tử

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0, chúng ta có thể lưu trữ 2 đối số trong một danh sách và sau đó giải nén các đối số đó trực tiếp trong lệnh gọi hàm. Sử dụng nó trong một định nghĩa hàm lưu trữ tất cả các đối số trong bộ dữ liệu được gán cho biến

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
3

Toán tử này thường được sử dụng với hàm zip[] trong Python

Làm cách nào chúng ta có thể nén hai danh sách trong Python?

Hàm có sẵn

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
1 trong Python được sử dụng để nối các bộ dữ liệu hoặc danh sách lại với nhau. Cách chức năng kết hợp chúng có thể được hiểu rõ nhất với một ví dụ

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
5

Ví dụ trên cho chúng ta thấy cách nối hai danh sách dựa trên các phần tử tương ứng của chúng. Tất cả những gì chúng ta phải làm là sử dụng hai danh sách làm đối số cho hàm zip[]. Trong ví dụ này, chúng ta có thể thấy chính xác hàm zip làm gì. Nó lấy từng chỉ mục từ các danh sách được cung cấp làm đối số và đặt chúng vào một bộ. Có nghĩa là, tất cả các mục chỉ số 0 đi vào bộ đầu tiên, tất cả các mục chỉ mục 1 đi vào bộ thứ hai, v.v.

Đầu ra của hàm zip[] là một iterator, có nghĩa là chúng ta phải áp dụng các hàm

>>> tuple_x = [1, 2, 3]
>>> tuple_x[0]
1
>>> tuple_x[0] = 1
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment
>>> 
>>> list_x = [1, 2, 'a', 'b']
>>> 
>>> list_x[0] = 100
>>> print[list_x]
[100, 2, 'a', 'b']
1 hoặc
>>> tuple_x = [1, 2, 3]
>>> tuple_x[0]
1
>>> tuple_x[0] = 1
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment
>>> 
>>> list_x = [1, 2, 'a', 'b']
>>> 
>>> list_x[0] = 100
>>> print[list_x]
[100, 2, 'a', 'b']
2 cho đầu ra để truy cập danh sách đã nối cuối cùng. Và vì đầu ra là một trình vòng lặp nên chúng ta có thể sử dụng hàm
>>> tuple_x = [1, 2, 3]
>>> tuple_x[0]
1
>>> tuple_x[0] = 1
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: 'tuple' object does not support item assignment
>>> 
>>> list_x = [1, 2, 'a', 'b']
>>> 
>>> list_x[0] = 100
>>> print[list_x]
[100, 2, 'a', 'b']
3 để lấy từng mục được nén có lợi ích riêng

Danh sách nén có độ dài khác nhau

Giả sử chúng ta phải nén hai danh sách khác nhau, nhưng chúng có độ dài khác nhau. Hàm zip[] xử lý tình huống này như thế nào?

Nếu độ dài của các danh sách khác nhau, hàm zip[] sẽ chỉ nén cho đến khi có thể tìm thấy các chỉ mục phù hợp. Ví dụ

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
9

Ở đây chúng ta có thể thấy rằng hàm zip[] ngừng nối các chỉ mục sau chỉ mục 2 vì danh sách thứ hai không có chỉ mục 3

Nén nhiều hơn hai danh sách

Chúng tôi thực sự có thể nén nhiều hơn một danh sách lại với nhau. Ví dụ

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0

Ví dụ này cho thấy rằng chúng ta có thể nén nhiều hơn hai danh sách, chỉ bằng cách thêm chúng vào hàm zip[] của chúng ta. Hơn nữa, như chúng tôi đã đề cập trước đó, điều này cũng có thể được thực hiện với toán tử

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
2

Ở đây, chúng ta thấy rằng chúng ta có thể sử dụng toán tử

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 với hàm zip[] để nén các danh sách trong
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
4 lại với nhau. Tiếp theo, chúng tôi thấy rằng sau khi thêm hai danh sách nữa vào
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
4, chúng tôi vẫn có thể sử dụng cùng một dòng mã để nén các danh sách lại với nhau. Đây là ưu điểm của toán tử
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0. Chúng tôi có thể nén nhiều danh sách lại với nhau mà không cần biết chúng tôi có bao nhiêu danh sách trong
>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
4

Lưu ý rằng trong các phần trước, chúng tôi đã cung cấp các đối số danh sách trong các ví dụ của mình, nhưng chúng tôi có thể thực hiện tất cả các thao tác tương tự với các đối số bộ

Nghịch đảo của chức năng zip là gì?

Hàm zip[] không chỉ được sử dụng để nén nhiều chuỗi lại với nhau mà còn thực hiện ngược lại. giải nén chúng. Chúng ta có thể làm điều này bằng cách sử dụng toán tử

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0 và đầu ra của hàm zip[] với một hàm zip[] khác như vậy

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
9

Ở đây, chúng tôi thấy rằng bằng cách sử dụng mã zip trên đầu ra của thao tác nén trước đó, chúng tôi có thể đảo ngược thao tác và lấy lại danh sách ban đầu của mình. Sự khác biệt duy nhất là các mục trong danh sách hiện là bộ

Tóm lược

Trong bài viết này, trước tiên chúng ta tìm hiểu sơ qua về danh sách và bộ dữ liệu trong Python. Sau đó, chúng tôi đã khám phá một cách sử dụng khác của ký hiệu

>>> list_y = [[1, 2], ['a', 'b']]
>>> list_y[0]
[1, 2]
0. Sau đó, sử dụng kiến ​​thức của chúng tôi về các khái niệm này, chúng tôi đã xem hàm zip[] trong Python là gì và thấy nhiều cách khác nhau để sử dụng nó. Cuối cùng, chúng tôi đã xem xét cách chúng tôi có thể đảo ngược toàn bộ thao tác zip

Bước tiếp theo

Nếu bạn muốn tìm hiểu thêm về những kiến ​​thức cơ bản về Python, mã hóa và phát triển phần mềm, hãy xem Sách hướng dẫn những điều cơ bản về mã hóa dành cho nhà phát triển của chúng tôi, nơi chúng tôi đề cập đến các ngôn ngữ, khái niệm và công cụ thiết yếu mà bạn sẽ cần để trở thành một nhà phát triển chuyên nghiệp

Cảm ơn và mã hóa hạnh phúc. Chúng tôi hy vọng bạn thích bài viết này. Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng liên hệ với jacob@initialcommit. io

Điều gì xảy ra khi bạn nén hai danh sách trong Python?

Hàm zip[] của Python tạo một trình vòng lặp sẽ tổng hợp các phần tử từ hai hoặc nhiều vòng lặp . Bạn có thể sử dụng trình vòng lặp kết quả để giải quyết các vấn đề lập trình phổ biến một cách nhanh chóng và nhất quán, chẳng hạn như tạo từ điển.

Chúng ta có thể nén hai bộ dữ liệu trong Python không?

12. 5 Danh sách và bộ dữ liệu . Trong Python 3, zip trả về một bộ lặp gồm các bộ, nhưng đối với hầu hết các mục đích, một trình vòng lặp hoạt động giống như một danh sách. zip is a built-in function that takes two or more sequences and “zips” them into a list of tuples where each tuple contains one element from each sequence. In Python 3, zip returns an iterator of tuples, but for most purposes, an iterator behaves like a list.

Chủ Đề