最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

定義一個迭代器去生成偶數數列

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

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

python用戶定義的迭代器

迭代器基于下面兩個方法

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

(2)__iter__ 返回迭代器本身

當序列遍歷完時

將拋出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)

運行結果:

5
4
3
2
1
0

用戶定義的迭代器

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

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

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

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

如果沒找到這類__iter__方法,Python會改用__getitem__機制,就像之前那樣通過偏移量重復索引,直到引發(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小白學習交流群:711312441 
for i in Squares(1, 5):
    print(i)

運行結果:

1
4
9
16
25

用生成器函數編寫

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

運行結果:

1 4 9 16 25

總結

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

相關文章

  • pyCaret效率倍增開源低代碼的python機器學習工具

    pyCaret效率倍增開源低代碼的python機器學習工具

    這篇文章主要介紹了pyCaret一款可以使效率倍增的開源低代碼的python機器學習工具,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python實現字符型圖片驗證碼識別完整過程詳解

    Python實現字符型圖片驗證碼識別完整過程詳解

    這篇文章主要介紹了Python實現字符型圖片驗證碼識別完整過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Python argparse命令參數與config配置參數示例深入詳解

    Python argparse命令參數與config配置參數示例深入詳解

    這篇文章主要介紹了Python argparse命令參數與config配置參數,argparse是Python內置的一個用于命令項選項與參數解析的模塊,通過在程序中定義好我們需要的參數,然后在程序啟動命令行傳遞我們想要改變的參數
    2023-03-03
  • python中wheel的用法整理

    python中wheel的用法整理

    在本篇文章里小編給大家整理的是關于python中wheel的用法整理內容,需要的朋友們可以跟著學習下。
    2020-06-06
  • python缺失值的解決方法總結

    python缺失值的解決方法總結

    在本篇文章里小編給大家整理的是一篇關于python缺失值的解決方法總結,有需要的朋友們可以跟著學習下。
    2021-06-06
  • Python面向對象之靜態(tài)屬性、類方法與靜態(tài)方法分析

    Python面向對象之靜態(tài)屬性、類方法與靜態(tài)方法分析

    這篇文章主要介紹了Python面向對象之靜態(tài)屬性、類方法與靜態(tài)方法,結合實例形式分析了Python面向對象程序設計中靜態(tài)屬性、類方法及靜態(tài)方法相關概念、使用方法及操作注意事項,需要的朋友可以參考下
    2018-08-08
  • Python理解遞歸的方法總結

    Python理解遞歸的方法總結

    在本篇文章里小編給大家分享了關于如何使用Python來理解遞歸的知識點內容,有興趣的朋友們學習下。
    2019-01-01
  • Python數學建模PuLP庫線性規(guī)劃進階基于字典詳解

    Python數學建模PuLP庫線性規(guī)劃進階基于字典詳解

    在大規(guī)模的規(guī)劃問題中,這樣逐個定義變量和設置模型參數非常繁瑣,效率很低。Pulp 庫提供了一種快捷方式,可以結合 Python語言的循環(huán)和容器,使用字典來創(chuàng)建問題
    2021-10-10
  • python3.8中關于sklearn問題(win10)

    python3.8中關于sklearn問題(win10)

    這篇文章主要介紹了python3.8中關于sklearn問題(win10),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 獲取django框架orm query執(zhí)行的sql語句實現方法分析

    獲取django框架orm query執(zhí)行的sql語句實現方法分析

    這篇文章主要介紹了獲取django框架orm query執(zhí)行的sql語句實現方法,結合實例形式分析了Django框架中orm query執(zhí)行的sql語句獲取方法相關實現技巧,需要的朋友可以參考下
    2019-06-06

最新評論

大荔县| 嘉荫县| 隆回县| 高清| 望奎县| 虹口区| 宁强县| 莱西市| 镇远县| 临桂县| 黄骅市| 仙居县| 新龙县| 噶尔县| 巴东县| 林芝县| 兴宁市| 鹤山市| 木兰县| 疏勒县| 石狮市| 友谊县| 宜兰市| 永康市| 商河县| 安龙县| 淮南市| 平原县| 安庆市| 桐庐县| 通江县| 宁陕县| 烟台市| 大理市| 榆林市| 商洛市| 日土县| 宝坻区| 胶南市| 石林| 阳曲县|