-1

実行すると、次のエラーが表示されます。

TypeError: 'zip' オブジェクトは添字可能ではありません

私は何をすべきか?

4

2 に答える 2

5

Python 3 ではzip()、リストではなく反復子を返します。リストにキャストすることもできます:

columns = list(zip(*rows))
float_columns = [map(float, col) for col in columns[1:]]

itertools.islice最初の要素以外のすべてを選択するために使用します。

from itertools import islice

columns = zip(*rows)
float_columns = [map(float, col) for col in islice(columns, 1)]

または次のように最初の要素をスキップしnext()ます。

columns = zip(*rows)
next(columns, None)  # skip the first column
float_columns = [map(float, col) for col in columns]

map()リストではなく、イテレータも返すことに注意してください。それはあなたの目的には問題ないかもしれません。

たとえば、各列の最大値を見つけたい場合は、それを組み合わせることができます。

columns = zip(*rows)
next(columns, None)  # skip the first column
max_columns = [max(map(float, col)) for col in columns]
于 2013-04-04T08:53:43.303 に答える