1. ホーム
  2. python

Python 3 の zip() 関数 [重複] について

2023-09-15 03:38:04

質問

の使い方は知っています。 zip() 関数の使い方は知っています。私の質問は、私がどういうわけか非常に奇妙に感じている以下のことについてです。

私は2つのリストを定義します。

lis1 = [0, 1, 2, 3]
lis2 = [4, 5, 6, 7]

で、私は zip() をこれらにつけて、次のようにします。

1. test1 = zip( lis1, lis2)

2. test2 = list(zip(lis1, lis2))

と入力すると test1 と入力すると、このようになります。

"zip object at 0x1007a06c8"

そこで、私は list(test1) と入力すると、意図したとおりの結果が得られます。 list(test1) を入力すると、空のリストが表示されます。

私が奇妙に思うのは、何度タイプしても test2 を何度入力しても、常に意図した結果が得られ、決して空リストにはならないことです。

どのように解決するのですか?

Python2とは異なり zip 関数は、Python 3では イテレータ . イテレータは一度だけ(リストを作るような方法で)使い切ることができます。 この目的は、イテレータの要素を一度にメモリに入れるのではなく、必要なときだけ生成することでメモリを節約するためです。 圧縮されたオブジェクトを再利用したい場合は、2つ目の例で行ったようにリストを作成し、次のような方法でリストを複製します。

 test2 = list(zip(lis1,lis2))
 zipped_list = test2[:]
 zipped_list_2 = list(test2)