Cho ij trong ab python

Hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python tạo một trình lặp sẽ tổng hợp các phần tử từ hai hoặc nhiều lần 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. Trong hướng dẫn này, bạn sẽ khám phá logic đằng sau hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python và cách bạn có thể sử dụng nó để giải quyết các vấn đề trong thế giới thực

Đến cuối hướng dẫn này, bạn sẽ học

  • Cách thức hoạt động của
    >>> s1 = {2, 3, 1}
    >>> s2 = {'b', 'a', 'c'}
    >>> list[zip[s1, s2]]
    [[1, 'a'], [2, 'c'], [3, 'b']]
    
    5 trong cả Python 3 và Python 2
  • Cách sử dụng hàm Python
    >>> s1 = {2, 3, 1}
    >>> s2 = {'b', 'a', 'c'}
    >>> list[zip[s1, s2]]
    [[1, 'a'], [2, 'c'], [3, 'b']]
    
    5 để lặp song song
  • Cách tạo từ điển nhanh chóng bằng cách sử dụng
    >>> s1 = {2, 3, 1}
    >>> s2 = {'b', 'a', 'c'}
    >>> list[zip[s1, s2]]
    [[1, 'a'], [2, 'c'], [3, 'b']]
    
    5

Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới

Tìm hiểu Hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 có sẵn trong không gian tên tích hợp. Nếu bạn sử dụng
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
2 để kiểm tra
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
3, thì bạn sẽ thấy
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 ở cuối danh sách

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
0

Bạn có thể thấy rằng

>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
5 là mục cuối cùng trong danh sách các đối tượng có sẵn

Theo tài liệu chính thức, hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python hoạt động như sau

Trả về một bộ lặp của các bộ, trong đó bộ thứ i chứa phần tử thứ i từ mỗi chuỗi đối số hoặc bộ lặp. Trình vòng lặp dừng khi hết vòng lặp đầu vào ngắn nhất. Với một đối số có thể lặp lại duy nhất, nó trả về một trình lặp gồm 1 bộ. Không có đối số, nó trả về một trình vòng lặp trống. [Nguồn]

Bạn sẽ giải nén định nghĩa này trong suốt phần còn lại của hướng dẫn. Khi bạn xem qua các ví dụ về mã, bạn sẽ thấy rằng các hoạt động của khóa kéo trong Python hoạt động giống như khóa kéo vật lý trên một chiếc túi hoặc một chiếc quần jean. Các cặp răng lồng vào nhau ở cả hai bên của khóa kéo được kéo lại với nhau để đóng lỗ. Trên thực tế, sự tương tự trực quan này là hoàn hảo để hiểu

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5, vì chức năng này được đặt tên theo các dây kéo vật lý

Loại bỏ các quảng cáo

Sử dụng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trong Python

Hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python được định nghĩa là
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
60. Hàm nhận các iterables làm đối số và trả về một iterator. Trình lặp này tạo ra một loạt các bộ chứa các phần tử từ mỗi lần lặp.
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 có thể chấp nhận bất kỳ loại lặp nào, chẳng hạn như tệp, danh sách, bộ dữ liệu, từ điển, bộ, v.v.

Vượt qua đối số
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
62

Nếu bạn sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 với đối số
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
62 thì hàm sẽ trả về một trình vòng lặp tạo ra các bộ có độ dài
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
62. Để thấy điều này đang hoạt động, hãy xem khối mã sau

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
2

Ở đây, bạn sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
66 để tạo một trình vòng lặp tạo ra các bộ dữ liệu có dạng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
67. Trong trường hợp này, các giá trị
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
68 được lấy từ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
69 và các giá trị
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
70 được lấy từ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
71. Lưu ý cách hàm Python
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trả về một trình vòng lặp. Để truy xuất đối tượng danh sách cuối cùng, bạn cần sử dụng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
73 để sử dụng trình vòng lặp

Nếu bạn đang làm việc với các chuỗi như danh sách, bộ dữ liệu hoặc chuỗi, thì các lần lặp của bạn được đảm bảo sẽ được đánh giá từ trái sang phải. Điều này có nghĩa là danh sách các bộ kết quả sẽ có dạng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
74. Tuy nhiên, đối với các loại lần lặp khác [như bộ], bạn có thể thấy một số kết quả kỳ lạ

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]

Trong ví dụ này,

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
75 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
76 là các đối tượng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
77, không giữ các phần tử của chúng theo bất kỳ thứ tự cụ thể nào. Điều này có nghĩa là các bộ dữ liệu được trả về bởi
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 sẽ có các phần tử được ghép nối ngẫu nhiên. Nếu bạn định sử dụng hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python với các lần lặp không có thứ tự như bộ, thì đây là điều cần lưu ý

Vượt qua không có đối số

Bạn cũng có thể gọi

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 mà không có đối số. Trong trường hợp này, bạn sẽ chỉ nhận được một trình vòng lặp trống

>>>

>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]

Ở đây, bạn gọi

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 mà không có đối số, vì vậy biến
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
12 của bạn chứa một trình vòng lặp trống. Nếu bạn sử dụng iterator với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
73, thì bạn cũng sẽ thấy một danh sách trống

Bạn cũng có thể thử buộc trình vòng lặp trống trực tiếp tạo ra một phần tử. Trong trường hợp này, bạn sẽ nhận được một ngoại lệ

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
14

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
6

Khi bạn gọi

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
15 trên
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
12, Python sẽ cố truy xuất mục tiếp theo. Tuy nhiên, vì
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
12 chứa một iterator trống, nên không có gì để lấy ra, vì vậy Python đưa ra một ngoại lệ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
14

Vượt qua một đối số

Hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python cũng có thể nhận một đối số. Kết quả sẽ là một trình lặp tạo ra một loạt các bộ dữ liệu 1 mục

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
7

Điều này có thể không hữu ích, nhưng nó vẫn hoạt động. Có lẽ bạn có thể tìm thấy một số trường hợp sử dụng cho hành vi này của

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5

Như bạn có thể thấy, bạn có thể gọi hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python với bao nhiêu lần lặp đầu vào tùy thích. Độ dài của các bộ kết quả sẽ luôn bằng số lần lặp mà bạn chuyển làm đối số. Đây là một ví dụ với ba lần lặp

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
1

Ở đây, bạn gọi hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python với ba lần lặp, do đó, các bộ kết quả có ba phần tử mỗi bộ

Loại bỏ các quảng cáo

Vượt qua các đối số có độ dài không bằng nhau

Khi bạn đang làm việc với hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python, điều quan trọng là phải chú ý đến độ dài của các lần lặp của bạn. Có thể các lần lặp mà bạn chuyển vào dưới dạng đối số không có cùng độ dài

Trong những trường hợp này, số lượng phần tử mà

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 đưa ra sẽ bằng độ dài của iterable ngắn nhất. Các phần tử còn lại trong bất kỳ lần lặp nào dài hơn sẽ bị
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 bỏ qua hoàn toàn, như bạn có thể thấy tại đây

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
8

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
86 là độ dài của đối tượng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
87 đầu tiên [và ngắn nhất], nên
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 xuất ra một danh sách gồm năm bộ dữ liệu. Vẫn còn 95 phần tử chưa khớp từ đối tượng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
87 thứ hai. Tất cả những thứ này đều bị
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 bỏ qua vì không còn phần tử nào từ đối tượng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
87 đầu tiên để hoàn thành các cặp

Nếu các giá trị theo sau hoặc không khớp là quan trọng đối với bạn, thì bạn có thể sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
52 thay vì
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5. Với hàm này, các giá trị bị thiếu sẽ được thay thế bằng bất kỳ giá trị nào bạn chuyển đến đối số
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
54 [mặc định là
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
55]. Lặp lại sẽ tiếp tục cho đến khi hết lần lặp dài nhất

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5

Ở đây, bạn sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
52 để tạo ra năm bộ dữ liệu có các phần tử từ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
71,
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
69 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
59. Quá trình lặp chỉ dừng lại khi hết
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
59. Các yếu tố còn thiếu từ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
69 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
71 được điền bằng dấu chấm hỏi
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
73, đây là những gì bạn đã chỉ định với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
54

Kể từ Python 3. 10,

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 có một đối số từ khóa tùy chọn mới được gọi là
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
76, được giới thiệu thông qua PEP 618—Thêm kiểm tra độ dài tùy chọn vào zip. Mục tiêu chính của đối số này là cung cấp một cách an toàn để xử lý các lần lặp có độ dài không bằng nhau

Giá trị mặc định của

>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
76 là
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
78, đảm bảo rằng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 vẫn tương thích ngược và có hành vi mặc định phù hợp với hành vi của nó trong các phiên bản Python 3 cũ hơn

>>>

>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
7

Trong Python >= 3. 10, gọi

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 mà không thay đổi giá trị mặc định thành
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
76 vẫn cung cấp cho bạn danh sách năm bộ dữ liệu, với các phần tử chưa khớp từ đối tượng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
87 thứ hai bị bỏ qua

Ngoài ra, nếu bạn đặt

>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
76 thành
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
204, thì
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 sẽ kiểm tra xem các lần lặp đầu vào mà bạn đã cung cấp làm đối số có cùng độ dài hay không, tăng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
206 nếu chúng không

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
20

Tính năng mới này của

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 rất hữu ích khi bạn cần đảm bảo rằng hàm chỉ chấp nhận các lần lặp có độ dài bằng nhau. Đặt
>>> zipped = zip[]
>>> zipped

>>> list[zipped]
[]
76 thành
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
204 làm cho mã mong đợi các lần lặp có độ dài bằng nhau an toàn hơn, đảm bảo rằng các thay đổi bị lỗi đối với mã người gọi không dẫn đến mất dữ liệu một cách thầm lặng

So sánh
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trong Python 3 và 2

Hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python hoạt động khác nhau trong cả hai phiên bản của ngôn ngữ. Trong Python 2,
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trả về một
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
213 bộ dữ liệu. Kết quả
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
213 bị cắt bớt theo độ dài của đầu vào ngắn nhất có thể lặp lại. Nếu bạn gọi
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 mà không có đối số, thì bạn sẽ nhận được một số trống
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
213

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
21

Trong trường hợp này, lệnh gọi hàm Python

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của bạn trả về một danh sách các bộ dữ liệu bị cắt bớt ở giá trị
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
218. Khi bạn gọi
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 mà không có đối số, bạn sẽ nhận được một số trống
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
213

Tuy nhiên, trong Python 3,

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trả về một trình vòng lặp. Đối tượng này tạo ra các bộ dữ liệu theo yêu cầu và chỉ có thể duyệt qua một lần. Quá trình lặp lại kết thúc với ngoại lệ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
14 sau khi hết lần lặp đầu vào ngắn nhất. Nếu bạn không cung cấp đối số nào cho
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5, thì hàm sẽ trả về một trình vòng lặp trống

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
22

Tại đây, cuộc gọi của bạn tới

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trả về một trình vòng lặp. Lần lặp đầu tiên bị cắt bớt ở
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
218 và lần lặp thứ hai dẫn đến ngoại lệ
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
14. Trong Python 3, bạn cũng có thể mô phỏng hành vi của Python 2 của
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 bằng cách gói trình lặp được trả về trong lệnh gọi tới
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
73. Điều này sẽ chạy qua iterator và trả về một danh sách các bộ dữ liệu

Nếu bạn thường xuyên sử dụng Python 2, lưu ý rằng việc sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 với các lần lặp đầu vào dài có thể vô tình tiêu tốn rất nhiều bộ nhớ. Trong những tình huống này, hãy cân nhắc sử dụng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
230 để thay thế. Hàm này tạo một iterator tổng hợp các phần tử từ mỗi iterables. Nó tạo ra hiệu ứng tương tự như
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trong Python 3

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
23

Trong ví dụ này, bạn gọi

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
232 để tạo một iterator. Khi bạn sử dụng trình lặp được trả về với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
73, bạn sẽ nhận được một danh sách các bộ dữ liệu, giống như khi bạn đang sử dụng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trong Python 3. Quá trình lặp lại dừng khi hết lần lặp đầu vào ngắn nhất

Nếu bạn thực sự cần viết mã hoạt động theo cùng một cách trong cả Python 2 và Python 3, thì bạn có thể sử dụng một mẹo như sau

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
24

Tại đây, nếu

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
235 có sẵn trong
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
236, thì bạn sẽ biết rằng bạn đang sử dụng Python 2 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
235 sẽ được nhập bằng bí danh
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
238. Nếu không, chương trình của bạn sẽ tăng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
239 và bạn sẽ biết rằng mình đang sử dụng Python 3. [Câu lệnh
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
240 ở đây chỉ là phần giữ chỗ. ]

Với thủ thuật này, bạn có thể sử dụng hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python một cách an toàn trong toàn bộ mã của mình. Khi chạy, chương trình của bạn sẽ tự động chọn và sử dụng đúng phiên bản

Cho đến giờ, bạn đã tìm hiểu về cách thức hoạt động của hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 trong Python và tìm hiểu về một số tính năng quan trọng nhất của nó. Bây giờ là lúc bạn xắn tay áo lên và bắt đầu mã hóa các ví dụ thực tế

Loại bỏ các quảng cáo

Lặp lại nhiều lần lặp lại

Vòng lặp qua nhiều lần lặp là một trong những trường hợp sử dụng phổ biến nhất cho hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python. Nếu bạn cần lặp qua nhiều danh sách, bộ dữ liệu hoặc bất kỳ trình tự nào khác, thì có khả năng bạn sẽ quay lại với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5. Phần này sẽ chỉ cho bạn cách sử dụng
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 để lặp qua nhiều lần lặp cùng một lúc

Duyệt danh sách song song

Hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python cho phép bạn lặp song song trên hai hoặc nhiều lần lặp. Vì
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 tạo ra các bộ dữ liệu, bạn có thể giải nén các bộ dữ liệu này trong tiêu đề của vòng lặp
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
248

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
25

Tại đây, bạn lặp qua một loạt các bộ dữ liệu được trả về bởi

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 và giải nén các phần tử thành
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
250 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
62. Khi bạn kết hợp các vòng lặp
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5,
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
248 và giải nén bộ dữ liệu, bạn có thể nhận được một thành ngữ Pythonic hữu ích để duyệt qua hai hoặc nhiều lần lặp cùng một lúc

Bạn cũng có thể lặp qua nhiều hơn hai lần lặp trong một vòng lặp

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
248. Xem xét ví dụ sau, có ba lần lặp đầu vào

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
26

Trong ví dụ này, bạn sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 với ba lần lặp để tạo và trả về một trình vòng lặp tạo bộ dữ liệu 3 mục. Điều này cho phép bạn lặp qua cả ba lần lặp trong một lần. Không có hạn chế về số lần lặp mà bạn có thể sử dụng với hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python

Ghi chú. Nếu bạn muốn tìm hiểu sâu hơn về các vòng lặp

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
248 của Python, hãy xem Vòng lặp “cho” Python [Lặp lại xác định]

Tra từ điển song song

Trong Trăn 3. 6 và hơn thế nữa, từ điển là các bộ sưu tập được sắp xếp theo thứ tự, nghĩa là chúng giữ các thành phần của chúng theo cùng thứ tự mà chúng được giới thiệu. Nếu bạn tận dụng tính năng này, thì bạn có thể sử dụng hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python để lặp qua nhiều từ điển một cách an toàn và mạch lạc

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
27

Tại đây, bạn lặp song song qua

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
259 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
260. Trong trường hợp này,
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 tạo bộ dữ liệu với các mục từ cả hai từ điển. Sau đó, bạn có thể giải nén từng bộ và có quyền truy cập vào các mục của cả hai từ điển cùng một lúc

Ghi chú. Nếu bạn muốn tìm hiểu sâu hơn về phép lặp từ điển, hãy xem Cách lặp qua từ điển trong Python

Lưu ý rằng, trong ví dụ trên, thứ tự đánh giá từ trái sang phải được đảm bảo. Bạn cũng có thể sử dụng hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python để lặp song song qua các tập hợp. Tuy nhiên, bạn sẽ cần xem xét điều đó, không giống như từ điển trong Python 3. 6, các bộ không sắp xếp các phần tử của chúng theo thứ tự. Nếu bạn quên chi tiết này, kết quả cuối cùng của chương trình có thể không hoàn toàn như bạn muốn hoặc mong đợi

Giải nén một chuỗi

Có một câu hỏi thường xuyên xuất hiện trên các diễn đàn dành cho Pythonistas mới. “Nếu có hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 thì tại sao không có hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
264 nào ngược lại?”

Lý do tại sao không có hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
264 trong Python là vì đối lập với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 là… chà,
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5. Bạn có nhớ rằng chức năng Python
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 hoạt động giống như một dây kéo thực sự không? . Vì vậy, làm thế nào để bạn giải nén các đối tượng Python?

Giả sử bạn có một danh sách các bộ và muốn tách các phần tử của mỗi bộ thành các chuỗi độc lập. Để làm điều này, bạn có thể sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 cùng với toán tử giải nén
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
270, như vậy

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
28

Ở đây, bạn có một

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
213 bộ dữ liệu chứa một số loại dữ liệu hỗn hợp. Sau đó, bạn sử dụng toán tử giải nén
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
270 để giải nén dữ liệu, tạo hai danh sách khác nhau [
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
69 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
71]

Loại bỏ các quảng cáo

Sắp xếp song song

Sắp xếp là một thao tác phổ biến trong lập trình. Giả sử bạn muốn kết hợp hai danh sách và sắp xếp chúng cùng một lúc. Để làm điều này, bạn có thể sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 cùng với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
276 như sau

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
29

Trong ví dụ này, trước tiên bạn kết hợp hai danh sách với

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 và sắp xếp chúng. Lưu ý cách
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
278 được sắp xếp theo
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
71 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
280 được sắp xếp theo
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
69

Bạn cũng có thể sử dụng đồng thời

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
282 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 để đạt được kết quả tương tự

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
0

Trong trường hợp này,

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
282 chạy qua iterator do
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 tạo ra và sắp xếp các mục theo
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
71, tất cả trong một lần. Cách tiếp cận này có thể nhanh hơn một chút vì bạn chỉ cần hai lệnh gọi hàm.
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
282

Với

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
282, bạn cũng đang viết một đoạn mã tổng quát hơn. Điều này sẽ cho phép bạn sắp xếp bất kỳ loại trình tự nào, không chỉ danh sách

Tính theo cặp

Bạn có thể sử dụng hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python để thực hiện một số phép tính nhanh. Giả sử bạn có dữ liệu sau trong bảng tính

Thành phần/ThángTháng GiêngTháng HaiTháng BaTổng doanh thu52.000. 0051,000. 0048.000. 00Chi phí sản xuất46,800. 0045.900. 0043,200. 00

Bạn sẽ sử dụng dữ liệu này để tính lợi nhuận hàng tháng của mình.

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 có thể cung cấp cho bạn một cách nhanh chóng để tính toán

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
1

Tại đây, bạn tính toán lợi nhuận cho mỗi tháng bằng cách lấy

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
293 trừ đi
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
292. Hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python kết hợp các cặp dữ liệu phù hợp để thực hiện các phép tính. Bạn có thể khái quát hóa logic này để thực hiện bất kỳ loại phép tính phức tạp nào với các cặp được trả về bởi
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5

xây dựng từ điển

Từ điển của Python là một cấu trúc dữ liệu rất hữu ích. Đôi khi, bạn có thể cần xây dựng một từ điển từ hai trình tự khác nhau nhưng có liên quan chặt chẽ với nhau. Một cách thuận tiện để đạt được điều này là sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
296 và
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 cùng nhau. Ví dụ: giả sử bạn đã truy xuất dữ liệu của một người từ biểu mẫu hoặc cơ sở dữ liệu. Bây giờ bạn có các danh sách dữ liệu sau

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
2

Với dữ liệu này, bạn cần tạo từ điển để xử lý tiếp. Trong trường hợp này, bạn có thể sử dụng

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
296 cùng với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 như sau

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
3

Tại đây, bạn tạo một từ điển kết hợp hai danh sách.

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
00 trả về một trình lặp tạo bộ dữ liệu 2 mục. Nếu bạn gọi
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
296 trên iterator đó, thì bạn sẽ xây dựng từ điển bạn cần. Các phần tử của
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
02 trở thành các khóa của từ điển và các phần tử của
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
03 đại diện cho các giá trị trong từ điển

Bạn cũng có thể cập nhật từ điển hiện có bằng cách kết hợp

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 với
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
05. Giả sử John thay đổi công việc và bạn cần cập nhật từ điển. Bạn có thể làm một cái gì đó như sau

>>>

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
4

Tại đây,

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
05 cập nhật từ điển với bộ khóa-giá trị mà bạn đã tạo bằng hàm
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python. Với kỹ thuật này, bạn có thể dễ dàng ghi đè lên giá trị của
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
08

Loại bỏ các quảng cáo

Sự kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python.
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 có thể nhận nhiều lần lặp làm đầu vào. Nó trả về một trình vòng lặp có thể tạo các bộ dữ liệu với các phần tử được ghép nối từ mỗi đối số. Trình lặp kết quả có thể khá hữu ích khi bạn cần xử lý nhiều lần lặp trong một vòng lặp và thực hiện một số hành động trên các mục của chúng cùng một lúc

Bây giờ bạn có thể

  • Sử dụng hàm
    >>> s1 = {2, 3, 1}
    >>> s2 = {'b', 'a', 'c'}
    >>> list[zip[s1, s2]]
    [[1, 'a'], [2, 'c'], [3, 'b']]
    
    5 trong cả Python 3 và Python 2
  • Lặp lại nhiều lần lặp và thực hiện song song các hành động khác nhau trên các mục của chúng
  • Tạo và cập nhật từ điển một cách nhanh chóng bằng cách nén hai lần lặp đầu vào với nhau

Bạn cũng đã mã hóa một vài ví dụ mà bạn có thể sử dụng làm điểm bắt đầu để triển khai các giải pháp của riêng mình bằng cách sử dụng hàm

>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5 của Python. Vui lòng sửa đổi các ví dụ này khi bạn khám phá sâu hơn về
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list[zip[s1, s2]]
[[1, 'a'], [2, 'c'], [3, 'b']]
5

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Phép lặp song song với hàm zip[] của Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Leodanis Pozo Ramos

Leodanis là một kỹ sư công nghiệp yêu thích Python và phát triển phần mềm. Anh ấy là một nhà phát triển Python tự học với hơn 6 năm kinh nghiệm. Anh ấy là một nhà văn đam mê kỹ thuật với số lượng bài báo được xuất bản ngày càng tăng trên Real Python và các trang web khác

» Tìm hiểu thêm về Leodanis

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Geir Arne

Jaya

Joanna

Mike

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Tôi và J trong vòng lặp Python là gì?

Biểu thức Python cho i, j ở dạng liệt kê[có thể lặp lại] cho phép bạn lặp qua một có thể lặp lại bằng cách sử dụng biến i làm bộ đếm [0, 1, 2,…] and variable j to capture the iterable elements.for i j in enumerate python. i=0 and j='Alice' , i=1 and j='Bob' , and.

Tôi có thể sử dụng 2 biến trong vòng lặp for Python không?

Làm cách nào tôi có thể bao gồm hai biến trong cùng một vòng lặp for? . #a hàm sẽ đọc danh sách "t1" và "t2" và trả về tất cả các phần tử giống hệt nhau cho i trong phạm vi[len[t1]] và cho j trong phạm vi[len[t2]].

for i in range trong Python là gì?

# Ví dụ với hai đối số cho i trong khoảng [-1, 5]. in[i, end=", "] # in. -1, 0, 1, 2, 3, 4, Giá trị bước tùy chọn kiểm soát mức tăng giữa các giá trị trong phạm vi . Theo mặc định, bước = 1. Trong ví dụ cuối cùng của chúng tôi, chúng tôi sử dụng phạm vi số nguyên từ -1 đến 5 và đặt bước = 2.

Có vòng lặp for trong Python không?

Vòng lặp for trong Python là một hàm lặp . Nếu bạn có một đối tượng chuỗi giống như một danh sách, bạn có thể sử dụng vòng lặp for để lặp lại các mục có trong danh sách. Chức năng của vòng lặp for không khác lắm so với những gì bạn thấy trong nhiều ngôn ngữ lập trình khác.

Chủ Đề