2017-06-27 14 views
0

複数のイテレータを1つのfor文でループすることはできますか?単一のfor文の複数のイテレータ

+0

をいいえ、あなたは、例えば必要があるだろう[itertools.chain'](https://docs.python.org/3/library/itertools.html#itertools.chain)それらを単一の反復可能にします。 – jonrsharpe

+0

'range(1)+ range(2)' –

答えて

4

forの構文には何も組み込まれていません。 forループは常に1つの反復可能ループをループします。あなたはしかし、one iterable backed by a bunch of othersを行うことができます。

import itertools 
for i in itertools.chain(range(1), range(2)): 
    print(i) 
0

これはできませんが、2つの範囲を1つのリストにマージするなどの方法があります。

for i in (range(1)+ range(2)): 
    print(i) 

これは動作するはずです。 range(1)とrange(2)はリストに展開され、オーバーロードされた '+'演算子を使用してそれらを連結することができます。

PS:python3では動作しません。範囲はオンザフライで生成される可能性があります。

+0

Python 3.xではそうではありません。 – jonrsharpe

+0

@jonsharpeあなたは正しいです。 – physicist

+0

"範囲がフライで生成されているため_可能です"実際には、私は 'range'に' __add__'メソッドが実装されているとは思われません。誰かが確認できますか? –

関連する問題