网络上的每个地方我都可以找到如何将字符串转换为整数,但相反的情况似乎并不起作用。有了这个错误(map()的参数2必须支持迭代)
我的整数:
-0.707106781187
-1.0
-0.408248290464
0.0
我的代码的相关部分:
def calculateZscore(inFileName, outFileName):
inputFile = open(inFileName,"r")
txtfile = open(outFileName, 'w')
for line in inputFile:
newList = line.strip().split(',')
obsExp = newList[-2:]
obsExp = list(map(int, obsExp))
obs = obsExp[0]
exp = obsExp[1]
zScore = (obs - exp) / math.sqrt(exp)
zScore = list(map(str, zScore))
print zScore
if __name__ == "__main__":
main()
答案 0 :(得分:0)
看起来zScore
将是一个浮点数。正如您的错误消息所示,map()
的第二个参数必须是iterable(例如list
,str
或tuple
)。
除非我遗漏了某些内容,zScore
总是一个值,所以你可能只是简单地逃脱:
str(zScore)
我不确定您打算在以后的程序中使用zScore
,但根据您的示例中的内容,我发现使用map
时没有任何优势,除非您需要将str
应用于列表或元组值。
但是,如果您只是希望当前代码停止引发相关错误,请尝试将其替换为:
zScore = list(map(str, zScore))
用这个:
zScore = map(str, [zScore])
此外,map()
将返回一个迭代器,因此除非您需要一次获取所有值,否则无需在结果上调用list()
。