私は次のようにizipモジュールをインポートしようとしています:
from itertools import izip
ただし、最近Python 2.7から3に切り替えた後、機能していないようです。
私はcsvファイルに書き込もうとしています:
writer.writerows(izip(variable1,2))
しかし、私には運がありません。それでもエラーが発生します。
Python 3では、ビルトインZip
は2.Xのitertools.izip
と同じ仕事をします(リストの代わりにイテレーターを返します)。 Zip
の実装 は、 old izip
からほぼ完全にコピーアンドペーストされ、いくつかの名前が変更され、ピクルのサポートが追加されています。
Python 2および3のZip
とPython 2のizip
の間のベンチマークは次のとおりです。
from timeit import timeit
print(timeit('list(izip(xrange(100), xrange(100)))',
'from itertools import izip',
number=500000))
print(timeit('Zip(xrange(100), xrange(100))', number=500000))
出力:
1.9288790226
1.2828938961
Python :
from timeit import timeit
print(timeit('list(Zip(range(100), range(100)))', number=500000))
出力:
1.7653984297066927
この場合、Zip
の引数は反復をサポートする必要があるため、2を引数として使用することはできません。したがって、2つの変数をCSV行として書き込みたい場合は、それらをタプルまたはリストに入れることができます。
writer.writerows((variable1,2))
また、itertools
から、Zip_longest
をより柔軟な関数としてインポートして、異なるサイズのイテレーターで使用できます。
私を助けた方法の1つは:
try:
from itertools import izip as Zip
except ImportError: # will be 3.x series
pass
python 3で直接Zip
の代わりにizip
を使用し、何もインポートする必要はありません。
詳細については、 こちら をご覧ください。