Python標準ライブラリのitertoolsライブラリの使用方法

2012 ワード


説明:私たちが普段使っている基本はrangeですが、なぜitertoolsを使うのでしょうか.
https://www.jb51.net/article/123094.htm
反復器(ジェネレータ)はPythonでよく使われていて使いやすいデータ構造であり、リスト(list)よりも反復器の最大の利点は計算を遅延し、必要に応じて使用することで開発体験と運行効率を向上させ、Python 3でmap、filterなどの操作がリストではなく反復器に戻ることである.
とはいえ、皆さんが普段使っている反復器はrangeしかありませんが、iter関数でリストオブジェクトを反復器オブジェクトに変換するのは少し多いので、今日の主役itertoolsが登場します.itertoolsの関数の多くは様々な反復器オブジェクトを返すもので、その中の多くの関数の役割は私たちが普段多くのコードを書くことで達成することができますが、実行効率はかえって低く、結局はシステムライブラリです.現在は主に循環に使われています.
注意:反復器はリストに似ていますが、リストではありません.それは現用現生成のメカニズムを採用しています.
次の点に注意してください.
import itertools
x = itertools.accumulate(range(10))
print(list(x)) #        :[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
print(list(x)) #        :[]      

itertoolsの一般的な機能:
'''  :            '''
import itertools
for i in itertools.accumulate(range(10)):
    print(i)


'''            : append  ,      '''
x = itertools.chain(range(3), range(4), [3,2,1])
print(list(x)) # [0, 1, 2, 0, 1, 2, 3, 3, 2, 1]

'''                        :        '''
x = itertools.combinations(range(4), 3) #  range(4)      3      
print(list(x))  # [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]

'''           ,         ''' 
x = itertools.combinations_with_replacement('ABC', 2)
print(list(x)) # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

'''    :         ''' 
x = itertools.product('ABC', range(3))
print(list(x)) # [('A', 0), ('A', 1), ('A', 2), ('B', 0), ('B', 1), ('B', 2), ('C', 0), ('C', 1), ('C', 2)]

'''        ,          ''' 
x = itertools.repeat(1, 5) #  5  ,     1
print(list(x)) # [1, 1, 1, 1, 1]

'''   ''' 


'''   '''