single
ジェネレーター関数
メニューを表示するにはスワイプしてください
ジェネレーター関数は、yieldの代わりにreturnキーワードを使用して値のシーケンスを生成する特別な種類の関数です。ジェネレーター関数を呼び出すと、イテレーターオブジェクトが返され、これを反復処理することで値を一つずつ取得できます。
ジェネレーター関数の主な利点は、メモリ効率の高さです。ジェネレーター関数は必要に応じて値をその場で生成するため、全てのシーケンスを事前に生成する必要がありません。これにより、大規模なデータセットや無限シーケンスを扱う際に特にメモリ効率が向上します。
簡単なジェネレーターの例を見てみましょう。この関数は、与えられたリストからログイン名を一つずつ生成します。
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
ジェネレーターの原理は、yieldキーワードを使って値を一度に一つずつ返し、__すべてを一度にメモリに保持しない__ことにあります。この例では、unique_logins_from_listジェネレーターは__ログイン名のリストを反復処理し、yieldで一つずつ返してその時点で一時停止__します。next()が呼ばれると、ジェネレーターは中断した位置から再開し、__リスト全体を同時にメモリに保持することなく__効率的に値を生成します。これにより、ジェネレーターは大規模なデータセットやデータストリームの処理に特に有用です。
スワイプしてコーディングを開始
ジェネレーター関数を使用してユニークなユーザーIDを生成します。id_generator()関数は、"ID_1"、"ID_2"などの識別子を継続的に生成する必要があります。
- 識別子が1から始まるため、変数
countを1で初期化します。 - 無限
whileループを使用して、継続的に識別子を生成します。 yieldを使って、f"ID_{count}"の形式で現在の識別子を返します。- 各イテレーションの後に
countを1ずつ増加させます。 - ジェネレーターオブジェクト
id_genをid_generator()の呼び出しで初期化します。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください