Trình tạo Python dừng

Sự định nghĩa. Trình tạo giống như một hàm bình thường tạo ra một loạt các giá trị bằng cách sử dụng từ khóa năng suất. Nó trả về một đối tượng tại một thời điểm. Nó sử dụng nội bộ một iterator. Để truy cập phần tử tiếp theo, hàm next() được sử dụng hoặc chúng ta có thể sử dụng nó cho một vòng lặp. Nếu chúng tôi cố gắng truy cập giá trị bên ngoài phạm vi, nó sẽ gây ra lỗi StopIteration

Chúng ta sẽ xem một số ví dụ để hiểu rõ hơn

Bán tại. chức năng tạo cho phạm vi giá trị

def range_fun ( n ):  
x = 0  
while< . x < n:  
sản lượng x  
x + = .  
y = range_fun (3)

#call using for loop  
print('Generate values using next() method')  
for i in range_fun(3):  
in( i )  <

#call generator using next method  
print('Generate values using for loop method')  
print(next(y))  
print(next(y))  
print(next(y))  
print(next(y))#Stop Iteration exception will be raised

Trình tạo Python dừng

Trình tạo Python dừng

Bán tại. Hàm tạo chuỗi Fibonacci

def fib_fun ( n ):    
    x , y = 0 . , 1  
    while x < n:  
        hiệu suất x  
      x ,< . y = y, x + y  
   
z = fib_fun(6) #generator object  
   
print('Generate values using next() method')  
print(next(z))  
print(next(z))  
print(next(z))  
print(next(z))  
print(next(z))  
print(next(z))  
   
print('Generate values using for loop method')  
for i in fib_fun(6):    
    in( i )<

Trình tạo Python dừng

Trình tạo Python dừng

Bán tại. Hàm tạo để tạo phạm vi giá trị cho giá trị bắt đầu và kết thúc

def my_range ( bắt đầu , end):      
    hiện tại = bắt đầu        
    trong khi< . current < end:      
        sản lượng hiện tại      
      hiện tại + = . 1      
print('Generate values using next() method')  
nums = my_range(1,5)      
print(next(nums))      
print(next(nums))      
print(next(nums))      
print(next(nums))  
print('Generate values using for loop method')  
for num in my_range(1,5):    
    in( num )<

Trình tạo Python dừng

Trình tạo Python dừng

Bán tại. Trình tạo để nhân từng số (ít hơn một số) với một số

def gen_mulby_num (max,num):  
    n = 0  
    while n < max:  
        sản lượng n * num  
        n + = 1  
for i in gen_mulby_num(5,3):  
    in( i )<

Trình tạo Python dừng

Trình tạo Python dừng

Bán tại. Trình tạo để tìm khối cho phạm vi giá trị

def gen_mulby_num (max,num):  
    n = 0  
    while n < max:  
        sản lượng n * num  
        n + = 1  
for i in gen_mulby_num(5,3):  
    in( i )<

Trình tạo Python dừng

Trình tạo Python dừng

Bán tại. nhiều máy phát điện. tìm bình phương của các số chẵn được tạo ra từ một số

Máy phát điện 1. tạo ra các giá trị chẵn từ một số nhất định

Máy phát điện 2. tạo số vuông từ các giá trị của trình tạo1

def gen_even ( m ):  
    n = 0  
    while n < m:  
        if n % 2 = . 0:  
            sản lượng n  
          n + = . 2  
 
def gen_square(nums):  
      cho num in nums.
        sản lượng 2 * số  
 < .
for n in gen_square(gen_even(15)):  
      in( n )<

Trình tạo Python dừng

Trình tạo Python dừng

Bán tại. Nhiều máy phát điện. tạo chuỗi fibonacci và thêm giá trị 10 cho mỗi số

Máy phát điện1. tạo chuỗi fibonacci từ một số đã cho

Máy phát điện2. thêm mỗi số bằng 10 từ trình tạo1

def gen_fib ( n ):    
    x , y = 0 . , 1  
    while x < n:  
        hiệu suất x  
      x ,< . y = y, x + y  
 
def gen_add_10(nums):  
      cho num in nums.
        sản lượng 10 + num  
 < .
for n in gen_add_10(gen_fib(5)):  
      in( n )<

Trình tạo Python dừng

Trình tạo Python dừng

hiểu máy phát điện

Khả năng hiểu trình tạo tương tự như khả năng hiểu danh sách trong đó danh sách sử dụng dấu ngoặc vuông;

Bán tại

nums = ( i cho i in range(10))  
print(type(nums))  
print(list(nums))

Trình tạo Python dừng

Trình tạo Python dừng

Sự khác biệt giữa Máy phát điện và chức năng bình thường

  1. Trình tạo cung cấp các giá trị bằng cách sử dụng từ khóa năng suất trong đó hàm bình thường sử dụng từ khóa trả về
  2. Trình tạo bắt đầu từ nơi nó dừng khi được gọi lần sau. Hàm bình thường thực thi tất cả các câu lệnh mỗi lần
  3. Trình tạo tiết kiệm bộ nhớ vì nó trả về một giá trị tại một thời điểm. Vì vậy, chúng ta có thể sử dụng nó để tạo ra các giá trị vô hạn

Phần kết luận

Trình tạo rất hữu ích khi chúng tôi đang xử lý dữ liệu lớn/lớn. Tại một thời điểm nhất định, nó chỉ chứa một phần dữ liệu duy nhất chứ không phải toàn bộ dữ liệu. Khái niệm máy phát điện được coi là một khái niệm nâng cao trong python

Năng suất có dừng cho vòng lặp Python không?

yield trong Python có thể được sử dụng giống như câu lệnh return trong một hàm. Khi làm như vậy, hàm thay vì trả về đầu ra, nó trả về một trình tạo có thể được lặp lại khi. Sau đó, bạn có thể lặp qua trình tạo để trích xuất các mục. Việc lặp lại được thực hiện bằng vòng lặp for hoặc đơn giản là sử dụng hàm next() .

Năng suất có tăng StopIteration không?

Làm cách nào để sử dụng trình tạo trong Python?

Tạo trình tạo trong Python khá đơn giản. Nó tương tự như hàm thông thường được xác định bởi từ khóa def và sử dụng từ khóa suất thay vì trả về. .
danh sách = [1,2,3,4,5,6,7]
# Danh sách hiểu
z = [x**3 cho x trong danh sách]
# Biểu thức trình tạo
a = (x**3 cho x trong danh sách)
in(a)
in(z)

Bạn có thể lặp qua trình tạo bằng Python không?

Bạn cần gọi next() hoặc lặp qua đối tượng trình tạo để truy cập các giá trị do biểu thức trình tạo tạo ra. Khi không có giá trị tiếp theo trong đối tượng trình tạo, một ngoại lệ StopIteration sẽ được đưa ra. Có thể sử dụng vòng lặp for để lặp lại đối tượng trình tạo .