亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python如何定義一個迭代器去生成偶數(shù)數(shù)列

 更新時間:2024年02月19日 09:18:12   作者:正努力改變自己的人  
這篇文章主要介紹了python如何定義一個迭代器去生成偶數(shù)數(shù)列問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

定義一個迭代器去生成偶數(shù)數(shù)列

#創(chuàng)建迭代器類
class EvenIterator:
    def __init__(self,min_value,max_value):
        # 初始化參數(shù)
        self.min_value = min_value 
        self.max_value = max_value
         
    def __iter__(self):
        return self
    def __next__(self):
        # 在這里定義好累加條件
        if self.min_value % 2 != 0:#判斷最小值是不是偶數(shù),不是則加1
            self.min_value += 1
        if self.min_value <= self.max_value:
            x = self.min_value
            self.min_value += 2
            return x
        else:#拋出 StopIteration異常,結(jié)束代碼
            raise StopIteration

min_value = int(input("輸入需要生成偶數(shù)序列范圍的最小值"))
max_value = int(input("輸入需要生成偶數(shù)序列范圍的最大值"))
num2 = EvenIterator(min_value,max_value) #創(chuàng)建迭代器對象
print([i for i in num2],end="")#輸出偶數(shù)數(shù)組

python用戶定義的迭代器

迭代器基于下面兩個方法

(1)__next__ 返回容器的下一個項目

(2)__iter__ 返回迭代器本身

當(dāng)序列遍歷完時

將拋出StopIteration異常,所以通過捕獲這個異常來停止循環(huán)

下面是自定義迭代器的示例代碼:

class MyIterator(object):
    def __init__(self, step):
        self.step = step
 
    def __next__(self):
        if self.step == 0:
            raise StopIteration
        self.step -= 1
        return self.step
 
    def __iter__(self):
        return self
 
for i in MyIterator(6):
    print(i)

運行結(jié)果:

5
4
3
2
1
0

用戶定義的迭代器

如今,Python中所有的迭代壞境都會先嘗試_iter_二方法,再嘗試_getite_也就是說,它們寧愿使角第13章所學(xué)到的迭代協(xié)議,然后才是重復(fù)對對象進行索弓l運算。

如果對象不支持迭代協(xié)議,就會嘗試索引運算。

從技術(shù)角度來講,迭代環(huán)境是通過調(diào)用內(nèi)置函數(shù)iter去嘗試尋找iter方法來實現(xiàn)的,而這種方法應(yīng)該返回一個迭代器對象。

如果已經(jīng)提供了,Python就會重復(fù)調(diào)用這個迭代器對象的next方法,直到發(fā)生stop工teration異常。

如果沒找到這類__iter__方法,Python會改用__getitem__機制,就像之前那樣通過偏移量重復(fù)索引,直到引發(fā) IndexError異常。

下面的文件iters.py定義了用戶定義的迭代器類來生成平方值。

class Squares:
    def __init__(self, start, stop):
        self.value = start - 1
        self.stop = stop
    def __iter__(self):
        return self
    def __next__(self):
        if self.value == self.stop:
            raise StopIteration
        self.value += 1
        return self.value **2
#Python小白學(xué)習(xí)交流群:711312441 
for i in Squares(1, 5):
    print(i)

運行結(jié)果:

1
4
9
16
25

用生成器函數(shù)編寫

def gsquares(start, stop):
    for i in range(start, stop+1):
        yield i ** 2
 
for i in gsquares(1, 5):
    print(i, end=" ")

運行結(jié)果:

1 4 9 16 25

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 抓取知乎指定回答下視頻的方法

    python 抓取知乎指定回答下視頻的方法

    這篇文章主要介紹了python 抓取知乎指定回答下視頻的方法,文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Opencv求取連通區(qū)域重心實例

    Opencv求取連通區(qū)域重心實例

    這篇文章主要介紹了Opencv求取連通區(qū)域重心實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python中計算相似度的方法詳解

    Python中計算相似度的方法詳解

    計算相似度是許多機器學(xué)習(xí)和數(shù)據(jù)分析任務(wù)中的重要步驟,尤其是在推薦系統(tǒng)、文本分析和圖像處理等領(lǐng)域,下面我們就來看看具體的實現(xiàn)方法吧
    2025-02-02
  • Python爬蟲實現(xiàn)selenium處理iframe作用域問題

    Python爬蟲實現(xiàn)selenium處理iframe作用域問題

    這篇文章主要介紹了Python爬蟲實現(xiàn)selenium處理iframe作用域問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python產(chǎn)生Gnuplot繪圖數(shù)據(jù)的方法

    Python產(chǎn)生Gnuplot繪圖數(shù)據(jù)的方法

    今天小編就為大家分享一篇Python產(chǎn)生Gnuplot繪圖數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Mac版Python3安裝/升級的方式

    Mac版Python3安裝/升級的方式

    這篇文章主要介紹了Mac版Python3安裝/升級的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 基于Python代碼編輯器的選用(詳解)

    基于Python代碼編輯器的選用(詳解)

    下面小編就為大家?guī)硪黄赑ython代碼編輯器的選用(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • python驗證身份證信息實例代碼

    python驗證身份證信息實例代碼

    這篇文章主要介紹了python驗證身份證信息的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息

    Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息

    這篇文章主要介紹了Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • CentOS7下安裝python3.6.8的教程詳解

    CentOS7下安裝python3.6.8的教程詳解

    這篇文章主要介紹了CentOS7下安裝python3.6.8的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01

最新評論