__iter__ , __next__の使い方(python)



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

signal.square, sawtooth

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

矩形波, 三角波

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰


公開日:2021/7/30         

■説明
特殊メソッドとは、特殊な動作をする関数です。__iter__と、__next__について説明します。

__iter__
反復処理を実施します。通常、反復処理はforを使うと思いますが、forは対象がリスト形式である必要があります。一方__iter__はリスト形式ではなくても、反復処理が可能です。

class calc_Iter:
    def __init__(self, *nums):
        self.ans = nums
        self.nn = 0
        print("init実行")

    def __iter__(self):
        print("iter実行")
        return iter(self.ans)

test = calc_Iter(10,20,30)   #① __init__を実行
print(vars(test))                 #② varsはオブジェクトの中を出力

for i in test:                 #③ __iter__を実行
    print(i)

   ⇒ init実行      #①の実行結果
      {'ans': (10, 20, 30), 'nn': 0}      #②の実行結果
      iter実行      #③の実行結果
      10
      20
      30


__next__
複雑な処理を実施した結果を反復処理させたい場合に、__iter__と組み合わせて使用します。赤字が追加修正部分です。 注意が必要なのは、終了条件を定義(raise StopIterationの部分)しないと処理が終わらずにループし続けます。

class calc_Iter:
    def __init__(self, *nums):
        self.ans = nums
        self.nn = 0
        print("init実行")

    def __iter__(self):
        print("iter実行")
        return self

    def __next__(self):
        if self.nn == len(self.ans):raise StopIteration()
        value = self.ans[self.nn]
        self.nn += 1
        print("next実行")
        return value


test = calc_Iter(10,20,30)    
print(vars(test))      

for i in test:
    print(i)

⇒    init実行
      {'nums': (10, 20, 30), 'nn': 0}
      iter実行
      next実行
      10
      next実行
      20
      next実行
      30










サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

signal.square, sawtooth

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

矩形波, 三角波

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰