Cải thiện bài viết
Lưu bài viết
Cải thiện bài viết
Lưu bài viết
Đọcfor loops for iteration over a single element of a single list at a particular step whereas in iterating over multiple lists simultaneously, we refer using for loops for iteration over a single element of multiple lists at a particular step.
Bàn luận
Lặp lại trên các danh sách đơn, đề cập đến việc sử dụng các vòng lặp để lặp qua một phần tử duy nhất của một danh sách duy nhất ở một bước cụ thể trong khi lặp lại qua nhiều danh sách, chúng tôi đề cập đến các vòng lặp để lặp qua một phần tử của nhiều danh sách ở một bước cụ thể .
Lặp lại qua nhiều danh sách cùng một lúc
- Để hiểu rõ hơn về việc lặp lại nhiều danh sách, chúng tôi đang lặp lại hơn 3 danh sách cùng một lúc. : In Python 3, zip returns an iterator. zip[] function stops when anyone of the list of all the lists gets exhausted. In simple words, it runs till the smallest of all the lists.
Chúng tôi có thể lặp lại danh sách đồng thời theo cách:
Python3
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.
Dưới đây là việc triển khai chức năng zip và itertools.izip lặp đi lặp lại trên 3 danh sách:
1 red 255 2 while 256 3 black None
21 red 255 2 while 256 3 black None
31 red 255 2 while 256 3 black None
41 red 255 2 while 256 3 black None
51 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black None
71 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
91 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
11 red 255 2 while 256 3 black None
21 red 255 2 while 256 3 black None
31 red 255 2 while 256 3 black None
51 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black -1
01 red 255 2 while 256 3 black None
21 red 255 2 while 256 3 black -1
21 red 255 2 while 256 3 black None
51 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black -1
51 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black -1
71 red 255 2 while 256 3 black None
2Output:
1 red 255 2 while 256
1 red 255 2 while 256 3 black -1
9a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
0a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
1a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
2a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
3 : zip_longest stops when all lists are exhausted. When the shorter iterator[s] are exhausted, zip_longest yields a tuple with None value.a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
4a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
5a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
6Python3
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.
Dưới đây là việc triển khai chức năng zip và itertools.izip lặp đi lặp lại trên 3 danh sách:
1 red 255 2 while 256 3 black None
21 red 255 2 while 256 3 black None
31 red 255 2 while 256 3 black None
41 red 255 2 while 256 3 black None
51 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black None
71 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
91 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
11 red 255 2 while 256 3 black None
21 red 255 2 while 256 3 black None
31 red 255 2 while 256 3 black None
51 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black -1
01 red 255 2 while 256 3 black None
21 red 255 2 while 256 3 black -1
21 red 255 2 while 256 3 black None
51 red 255 2 while 256 3 black None
61 red 255 2 while 256 3 black -1
51 red 255 2 while 256 3 black None
81 red 255 2 while 256 3 black -1
71 red 255 2 while 256 3 black None
2Output:
1 red 255 2 while 256 3 black None
Output:
1 red 255 2 while 256 3 black None
1 red 255 2 while 256 3 black -19
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']0
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']1
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']2
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']3
Python3
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.
Dưới đây là việc triển khai chức năng zip và itertools.izip lặp đi lặp lại trên 3 danh sách:
1 red 255 2 while 256 3 black None2
1 red 255 2 while 256 3 black None3
1 red 255 2 while 256 3 black None4
1 red 255 2 while 256 3 black None5
1 red 255 2 while 256 3 black None6
1 red 255 2 while 256 3 black None7
1 red 255 2 while 256 3 black None8
1 red 255 2 while 256 3 black None9
1 red 255 2 while 256 3 black None8
1 red 255 2 while 256 3 black None1
1 red 255 2 while 256 3 black None2
1 red 255 2 while 256 3 black None3
1 red 255 2 while 256 3 black None5
1 red 255 2 while 256 3 black None6
1 red 255 2 while 256 3 black None6
1 red 255 2 while 256 3 black None8
1 red 255 2 while 256 3 black None8
1 red 255 2 while 256 3 black None8
1 red 255 2 while 256 3 black -10
1 red 255 2 while 256 3 black None2
1 red 255 2 while 256 3 black -12
1 red 255 2 while 256 3 black None5
1 red 255 2 while 256 3 black None6
1 red 255 2 while 256 3 black -15
1 red 255 2 while 256 3 black None8
1 red 255 2 while 256 3 black -17
1 red 255 2 while 256 3 black None2
Output:
1 red 255 2 while 256 3 black -1
1 red 255
2 while 256
3 black -1
9 a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
0a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
1 a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
2a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']
3Python 2.x had two extra functions izip[] and izip_longest[]. In Python 2.x, zip[] and zip_longest[] used to return list, and izip[] and izip_longest[] used to return iterator. In Python 3.x, there izip[] and izip_longest[] are not there as zip[] and zip_longest[] return iterator.
Vòng lặp qua nhiều danh sách
Tín dụng: Andy McKay
Vấn đề
Bạn cần phải lặp qua mọi mục của nhiều danh sách.
Dung dịch
Về cơ bản có ba cách tiếp cận. Nói bạn có:
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']
Sử dụng chức năng tích hợp
1 red 255 2 while 256 3 black None19, với đối số đầu tiên là
1 red 255 2 while 256 3 black None20, bạn có thể lặp lại trên cả hai danh sách song song:
print "Map:" for x, y in map[None, a, b]: print x, y
Các vòng lặp chạy ba lần. Trên lần lặp cuối cùng,
1 red 255 2 while 256 3 black None21 sẽ là
1 red 255 2 while 256 3 black None20.
Sử dụng chức năng tích hợp
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']2 cũng cho phép bạn lặp lại song song:
print "Zip:" for x, y in zip[a, b]: print x, y
Vòng lặp chạy hai lần; Việc lặp thứ ba chỉ đơn giản là không được thực hiện.
Danh sách hiểu biết có một lần lặp rất khác nhau:
print "List comprehension:" for x, y in [[x,y] for x in a for y in b]: print x, y
Vòng lặp chạy sáu lần, trên mỗi mục của
1 red 255 2 while 256 3 black None24 cho mỗi mục của
1 red 255 2 while 256 3 black None25.
Thảo luận
Sử dụng
1 red 255 2 while 256 3 black None19 với
1 red 255 2 while 256 3 black None20 làm đối số đầu tiên là một biến thể tinh tế của cuộc gọi
1 red 255 2 while 256 3 black None19 tiêu chuẩn, thường có chức năng là đối số đầu tiên. Như tài liệu chỉ ra, nếu đối số đầu tiên là
1 red 255 2 while 256 3 black None20, hàm nhận dạng được sử dụng làm hàm mà qua đó các đối số được ánh xạ. Nếu có nhiều đối số danh sách,
1 red 255 2 while 256 3 black None19 trả về một danh sách bao gồm các bộ dữ liệu chứa các mục tương ứng từ tất cả các danh sách [nói cách khác, thì đó là một loại hoạt động chuyển vị]. Các đối số danh sách có thể là bất kỳ loại trình tự nào và kết quả luôn là một danh sách.
Lưu ý rằng kỹ thuật đầu tiên trả về
1 red 255 2 while 256 3 black None20 cho các chuỗi trong đó không có thêm các yếu tố. Do đó, đầu ra của vòng lặp đầu tiên là:
Map: a1 b1 a2 b2 a3 None
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']2 cho phép bạn lặp lại các danh sách theo cách tương tự, nhưng chỉ có số lượng các yếu tố của danh sách nhỏ nhất. Do đó, đầu ra của kỹ thuật thứ hai là:
Zip: a1 b1 a2 b2
Python 2.0 đã giới thiệu các toàn bộ danh sách, với một cú pháp mà một số tìm thấy một chút lạ:
1 red 255 2 while 256 3 black None0
Điều này lặp lại trong danh sách
1 red 255 2 while 256 3 black None24 cho mọi yếu tố trong
1 red 255 2 while 256 3 black None25. Các yếu tố này được đưa vào một tuple
1 red 255 2 while 256 3 black None35
1 red 255 2 while 256 3 black None36. Sau đó, chúng tôi lặp lại thông qua danh sách kết quả của các bộ dữ liệu trong vòng lặp
1 red 255 2 while 256 3 black -19 ngoài cùng. Do đó, đầu ra của kỹ thuật thứ ba khá khác nhau:
1 red 255 2 while 256 3 black None1
Xem thêm
Phần tham chiếu thư viện về các loại trình tự; Tài liệu cho các tích hợp
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']2 và
1 red 255 2 while 256 3 black None19 trong tài liệu tham khảo thư viện.Library Reference section on sequence types; documentation for the
a = ['a1', 'a2', 'a3'] b = ['b1', 'b2']2 and
1 red 255 2 while 256 3 black None19 built-ins in the Library Reference.