61013


以下の `with_next()`
のように、不定長のイテレータから連続する2つの要素を順番に取得するループを、出来る限りシンプルな、行数の少ないコードで実現するにはどうすればいいでしょうか。  
よろしくお願いします。

[code]

    def with_next(it):
        it = iter(it)
        prev = next(it)
        for n in it:
            yield prev,n
            prev = n
    
    import itertools
    for a in with_next(itertools.count()):
        print(a)
        if a[0]>10:
            break
    
[/code]


CC BY-SA 4.0
2019-11-30T13:03:25.493
60973
2019-12-02T08:43:45.673
2019-12-02T02:40:09.063
28998
28998
question
python python3
イテレータから連続する2つ要素を舐める


### <頂いたコメントから>`itertools.tee()` を使う方法

頂いたコメントから `itertools.tee()` を使って以下のように書くことにしました。  
ありがとうございました。

[code]

    import itertools
    it1, it2 = itertools.tee(it)
    for a,b in zip(it1, itertools.islice(it2, 1, None)):
        ...
    
[/code]


CC BY-SA 4.0
2019-12-02T02:42:07.997
60999
2019-12-02T03:55:12.353
2019-12-02T03:55:12.353
28998
28998
60973
answer


more-itertoolsのwindowedをお探しではありませんか？  
<https://more-
itertools.readthedocs.io/en/stable/api.html#more_itertools.windowed>

[code]

    import itertools
    from more_itertools import windowed
    for a in windowed(itertools.count(), 2):
        print(a)
        if a[0]>10:
            break
    
[/code]


CC BY-SA 4.0
2019-12-02T08:43:45.673
61013
2019-12-02T08:43:45.673
62
60973
answer