検索ガイド -Search Guide-

単語と単語を空白で区切ることで AND 検索になります。
例: python デコレータ ('python' と 'デコレータ' 両方を含む記事を検索します)
単語の前に '-' を付けることで NOT 検索になります。
例: python -デコレータ ('python' は含むが 'デコレータ' は含まない記事を検索します)
" (ダブルクオート) で語句を囲むことで 完全一致検索になります。
例: "python data" 実装 ('python data' と '実装' 両方を含む記事を検索します。'python data 実装' の検索とは異なります。)
img_for_tre_tron

Tré Thộn を食べたことがありますか?
ベトナム・ビンズオン滞在中の方は是非注文して食べてみて!
絶対に美味しいです!
ホーチミン市内へも配達可能です。お問い合わせください。

Have you ever had "Tré Thộn" before?
If you're living at Bình Dương in Vietnam, you "must" try to order and eat it.
I'm sure you're very surprised how delicious it is!!
If you're in Hồ Chí Minh, you have a chance to get it too. Please call!!
>>
python_cookbook

Python Cookbook [Manually Consuming an Iterator : 手作業によるイテレーション操作] 投稿一覧へ戻る

Published 2020年4月24日21:08 by mootaro23

SUPPORT UKRAINE

- Your indifference to the act of cruelty can thrive rogue nations like Russia -

今回からイテレーション関連の tips を取り上げていきます。

Problem:

イテラブル (iterable) 中の要素を for ループを使わずに処理しろ、って、無茶言うよ、本当に。

Solution:

手作業でイテラブルを処理するには next() 関数を利用し、コード内で StopIteration 例外を捕まえるようにします。


例えば、ファイルから手作業で1行1行読み込んでいく処理は以下のようになります。

with open('../data/products.txt') as f:
try:
while True:
line = next(f)
print(line, end = '')
except StopIteration:
print('finish')



一般的には StopIteration がイテレーションの終了シグナルとして用いられますが、next() を「生身」で利用している場合には None のような値を代わりの終了シグナルとして返すことも可能です。

with open('../data/products.txt') as f:
while True:
line = next(f, None)
if line is None:
break
print(line, end = '')



イテラブルを処理する場合、for ステートメントを使用するケースがほとんどだと思います。


ただ、より綿密な反復処理コントロールが必要な場面に出くわさないとも限りません。


ですから、イテラブル処理において水面下で行われていることを知っておいても無駄ではないでしょう。


次の例は、イテレーション操作の基本的なメカニズムを示したものです。

items = [1, 2, 3]
my_iter = iter(items) # → items.__iter__() を呼び出してイテレーターを取得します。
next(my_iter) # → 1 [my_iter.__next__() を呼び出してイテレーターを動作させます。
next(my_iter) # → 2
next(my_iter) # → 3
next(my_iter) # → Traceback (most recent call last) StopIteration:



今回紹介した事項が次回以降のイテレーション関連の tips の大元になっています。


忘れずに頭の片隅に入れて置いてください。