Hướng dẫn dùng infinite def python
Một lặp lại trong Python là một đối tượng chứa một số giá trị hoặc phần tử có thể đếm được. Bạn có thể sử dụng cái này để Travers tất cả các phần tử đó. Trình lặp Python sử dụng các phương thức đặc biệt được gọi là phương thức __iter __ () và __next __ () để duyệt qua các phần tử đối tượng. Show Nội dung chính
Nếu chúng ta có thể lấy các trình vòng lặp Python từ nó, thì chúng ta gọi đối tượng đó là có thể lặp lại. Cho đến nay, chúng ta đã thấy các đối tượng được gọi là Danh sách, Bộ từ, Bộ và Từ điển. Từ những đối tượng này, bạn có thể gọi Iter. Phần này giải thích cách sử dụng lớp Python này và tạo các trình vòng lặp vô cực và vô cực của riêng chúng tôi với các ví dụ thực tế. Ví dụ về trình lặp chuỗiTrong python, chuỗi là đối tượng có thể lặp lại. Ở đây, chúng ta sử dụng vòng lặp for để lặp từng ký tự trong một chuỗi và trả về ký tự đó. Theo mặc định, hoặc nói, vòng lặp For triển khai khái niệm đối tượng Python Iterator mà bạn không biết. Python Đối với vòng lặp lặp Ví dụ 2Trong ví dụ này, chúng tôi đã sử dụng cả vòng lặp for và this. Trong ngôn ngữ lập trình python, chúng ta phải sử dụng hàm next () để trả về một phần tử hoặc giá trị từ một trình lặp. Hãy nhớ rằng, phương thức next () trả về một mục tại một thời điểm. Vì vậy, với n số mục, bạn phải sử dụng n câu lệnh next (). Ở đây, chúng tôi đã sử dụng next () cho một lần. Vì vậy, nó trả về ký tự đầu tiên từ một chuỗi. stng = 'graphguide' for x in stng: print(x, end = ' ') print("n**** Output *****") itr = iter(stng) print(next(itr))t u t o r i a l g a t e w a y **** Output ***** tHãy để tôi sử dụng next () để duyệt qua tất cả các ký tự trong một chuỗi. Lần này, các trình vòng lặp ghi chuỗi đã hoàn thành. sting = 'graphguide' for x in sting: print(x, end = ' ') print("n**** Example *****") itr = iter(sting) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr))t u t o r i a l **** Example ***** t u t o r i a lVí dụ về Trình lặp danh sách PythonTrong ví dụ này, chúng tôi chỉ ra cách duyệt qua các mục Danh sách và in chúng. numbers = [10, 20, 30, 40, 50] itr = iter(numbers) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr))1020 30 40 50 Trong ví dụ danh sách này, chúng tôi đã sử dụng phương thức đặc biệt __next __ (). Nếu bạn quan sát câu lệnh cuối cùng, chúng tôi đang cố gắng trả về phần tử tiếp theo không tồn tại. Đó là lý do tại sao Iter gọi StopIteration. Ví dụ về bộ lặp trong PythonBạn có thể sử dụng điều này để duyệt qua các mục đã đặt và trả về đối tượng. Chương trình này duyệt các số trong Tập hợp và in từng số trong số chúng. mySet = {1, 2, 3, 4, 5} ittr = iter(mySet) print(ittr.__next__()) print(ittr.__next__()) print(ittr.__next__()) print(ittr.__next__()) print(ittr.__next__())1 2 3 4 5Ví dụ TupleĐối tượng trình lặp Python cũng có thể cho phép bạn sử dụng trên Tuples. Chương trình này lặp lại các mục Tuple và in từng mục trong một bộ tuple. fruits = ('Apple', 'Orange', 'Grape', 'Banana', 'Kiwi') fruit_itr = iter(fruits) print(next(fruit_itr)) print(next(fruit_itr)) print(next(fruit_itr)) print(next(fruit_itr)) print(next(fruit_itr))Apple Orange Grape Banana KiwiTạo Trình lặp riêng bằng PythonNó là một lớp đơn giản được gọi là Counter. Trong ví dụ này, trước tiên, chúng tôi đã khai báo một giá trị lớn nhất trong phương thức __init__. Phương thức __iter__ là khởi tạo giá trị của một đối tượng có thể lặp lại. Hiện tại, chúng tôi đặt số là 0. Điều đó có nghĩa là Iter bắt đầu từ 0. Phương thức __next__ là để chọn phần tử tiếp theo từ một Đối tượng. Trong phương pháp này, chúng tôi đã sử dụng Câu lệnh If Else để kiểm tra xem số tiếp theo có lớn hơn giá trị lớn nhất hay không. Nếu Đúng, lỗi StopIteration tăng lên. Nếu không, con số sẽ tăng lên. class Counter: def __init__(self, maximum): self.maximum = maximum def __iter__(self): self.number = 0 return self def __next__(self): number = self.number if number > self.maximum: raise StopIteration else: self.number = number + 1 return number numbers = Counter(10) a = iter(numbers) print(next(a)) print(next(a)) print(next(a))Trình lặp ở trên trong mã python đang hiển thị các số từ 0 đến 2. Đó là vì chúng tôi chỉ sử dụng next (a) trong ba lần. Trong chương trình này, chúng tôi đã sử dụng vòng lặp for để lặp lại lớp Counter có giá trị lớn nhất là 10. Điều này in ra các giá trị từ 0 đến 10. __iter __ () bắt đầu từ 0 và __next __ () in các phần tử lên đến 10. class Counter: def __init__(self, maximum): self.maximum = maximum def __iter__(self): self.number = 0 return self def __next__(self): number = self.number if number > self.maximum: raise StopIteration else: self.number = number + 1 return number for t in Counter(10): print 0 1 2 3 4 5 6 7 8 9 10Lớp Python Infinity IteratorTrong khi bạn tạo iter của riêng mình, bạn phải luôn cẩn thận với các vòng lặp Vô cực. Nếu bạn quên nâng lỗi, thì bạn sẽ có vòng lặp vô cực. Đây là một ví dụ đơn giản về đối tượng vòng lặp vô cực. Nó tương tự như trên, nhưng chúng tôi đã loại bỏ câu lệnh If. class Counter: def __iter__(self): self.number = 0 return self def __next__(self): number = self.number self.number = number + 1 return number numbers = Counter() a = iter(numbers) print(next(a)) print(next(a)) print(next(a))0 1 2Mặc dù ví dụ trên là một iter vô hạn, nhưng bạn có thể không nhận thấy nó. Đó là bởi vì chúng tôi đã sử dụng next () chỉ trong ba lần. Vì vậy, hãy để tôi sử dụng vòng lặp for để Ian iter chức năng của lớp Counter. Vui lòng tham khảo bài viết từ điển. class Counter: def __iter__(self): self.num = 0 return self def __next__(self): num = self.num self.num = num + 1 return num for t in Counter(): printBây giờ bạn có thể thấy đối tượng trình lặp vô cực trong Python. Điều này thực hiện liên tục. 267 268 269 270 271 272 273 |