1. ホーム
  2. python-2.7

[解決済み] Python 2 --> 3: 'zip' 型のオブジェクトは len() を持ちません。

2022-02-15 07:13:48

質問

ニューラルネットのチュートリアルに沿っています。 1

Python 2.7での話です。私は3.4を使っています。この行が悩みの種です。

if test_data: n_test = len(test_data)

得ることができる。 TypeError: object of type 'zip' has no len() .

3.4で動くように書き換える方法はないでしょうか?

解決方法は?

イテレータが有限であることが分かっている場合。

#NOTE: `sum()` consumes the iterator
n_test = sum(1 for _ in test_data) # find len(iterator)

または、知っている場合 test_data は常に小さい そして プロファイラが、このコードがアプリケーションのボトルネックになっていると言った場合、以下のコードがより効率的である可能性があります。 n_test :

test_data = list(test_data)
n_test = len(test_data)

残念ながら operator.length_hint() (Python 3.4+)の場合、ゼロを返します。 zip() オブジェクトを作成します。参照 PEP 0424 -- 長さヒントを公開するためのメソッド .