我想读取一个包含两列的.csv文件。前者代表索引名,后者代表相应的供应。然后我想用alpha列表中表示的一些权重乘以供给。但是我得到一个错误
Can't multiply sequence by non-int of type 'float'
在我打电话的队伍里作家。写作. 你知道吗
从我从google收集到的信息来看,这是因为,[5]*3创建了一个包含3个元素的列表,值为5,这是我不想要的。我看到其他人通过循环解决了这个问题,在这个例子中,我在alpha中。除了以这种方式做这件事,还有别的方法吗?或者,当我对每个迭代中的一个值不感兴趣时,我现在是如何做的,我对它们同时感兴趣。你知道吗
我的代码如下:
#! /usr/bin/python
import csv
import math
writer = open("C:\\Users\\Guda\\Documents\\manipulerat3.csv", "w")
alpha = [0.16,0.13,0.13,0.20]
with open("C:\\Users\\Guda\\Documents\\manipulerat2.csv", "r") as f:
reader = csv.reader(f, delimiter ="\t")
for row in reader:
a = float(row[1])
a = int(math.ceil(a))
writer.write("%s\t\%s\t%s\%s\t%s\n" % (row[0],alpha[0]*a,alpha[1]*a,alpha[2]*a, alpha*alpha[3]))
看起来您想要在
alpha*alpha[3]
中实现的是将所有元素乘以第四个元素。看起来您还想在末尾将这个结果作为字符串输出(我假设以制表符分隔)。如果是这样的话,那么您可以将以下内容替换为alpha*alpha[3]
:试试
writer.write("%s\t\%s\t%s\%s\t%s\n" % (row[0],alpha[0]*a,alpha[1]*a,alpha[2]*a, alpha[3]*a))
您的代码中有一个输入错误,导致列表alpha与alpha相乘[3]。因为alpha[3]是一个float,所以您得到了上面提到的错误。你知道吗
相关问题 更多 >
编程相关推荐