当我运行它时,它给了我错误:
TypeError:“zip”对象不可下标
我应该怎么办?
在 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]
您正在使用 Python 3,其中 zip 返回一个可迭代的,而不是一个列表。
因此,通过将其转换为列表,您可以解决您的问题。
columns = list(zip(*rows))
此外,您可以按以下方式跳过第一列,在这种情况下,您可以删除切片。
columns = zip(*rows)
next(columns, 0)