Pythonの__iter __()と__next __()|オブジェクトをイテレータに変換する

多くの場合、イテレータのようにオブジェクトにアクセスする必要があります。 1つの方法はジェネレータループを形成することですが、それはプログラマの作業と時間を延長します。 Pythonはこのタスクに組み込みメソッド__iter __()を提供することでこのタスクを容易にします。 __iter __()関数は与えられたオブジェクト(配列、セット、Tupleなど、あるいはカスタムオブジェクト)のイテレータを返します。 __next __()関数を使用して一度に1つの要素にアクセスできるオブジェクトを作成します。これは一般的にループを扱うときに役立ちます。 構文: 例外:  __iter __()関数は、与えられたオブジェクトの各要素を通るイテレータオブジェクトを返します。次の要素は__next __()関数を通してアクセスできます。呼び出し可能オブジェクトおよびセンチネル値の場合は、値が見つかるまで、または要素の終わりに達するまで反復が行われます。いずれにせよ、元のオブジェクトは変更されません。  コード1:

🐶Pythonコードの例を示すで

# Python code demonstrating
# basic use of iter()
listA = ['a','e','i','o','u']

iter_listA = iter(listA)

try:
    print( next(iter_listA))  
    print( next(iter_listA))  
    print( next(iter_listA))  
    print( next(iter_listA))  
    print( next(iter_listA))
    print( next(iter_listA)) #StopIteration error
except:
    pass

🐶動画で動作確認してみよか?

動画で確認

コード#2:

🐶Pythonコードの例を示すで

# Python code demonstrating
# basic use of iter()
lst = [11, 22, 33, 44, 55]

iter_lst = iter(lst)
while True:
    try:
        print(iter_lst.__next__())  
    except:
        break

🐶動画で動作確認してみよか?

動画で確認

コード#3:

🐶Pythonコードの例を示すで

# Python code demonstrating
# basic use of iter()

listB = ['Cat', 'Bat', 'Sat', 'Mat']


iter_listB = listB.__iter__()

try:
    print(iter_listB.__next__())
    print(iter_listB.__next__())
    print(iter_listB.__next__())
    print(iter_listB.__next__())
    print(iter_listB.__next__()) #StopIteration error
except:
    print(" \nThrowing 'StopIterationError'",
                     "I cannot count more.")

🐶動画で動作確認してみよか?

動画で確認

コード#4:ユーザ定義オブジェクト(OOPSを使用)

🐶Pythonコードの例を示すで

# Python code showing use of iter() using OOPs

class Counter:
    def __init__(self, start, end):
        self.num = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):  
        if self.num > self.end:
            raise StopIteration
        else:
            self.num += 1
            return self.num - 1


# Driver code
if __name__ == '__main__' :

    a, b = 2, 5

    c1 = Counter(a, b)
    c2 = Counter(a, b)

    # Way 1-to print the range without iter()
    print ("Print the range without iter()")

    for i in c1:
        print ("Eating more Pizzas, couting ", i, end ="\n")

    print ("\nPrint the range using iter()\n")

    # Way 2- using iter()
    obj = iter(c2)
    try:
        while True: # Print till error raised
            print ("Eating more Pizzas, couting ", next(obj))
    except:  
        # when StopIteration raised, Print custom message
        print ("\nDead on overfood, GAME OVER")  

🐶動画で動作確認してみよか?

動画で確認

🐶 🐍

Last Updated: 5/19/2019, 1:46:25 AM