0

在网络上的任何地方,我都可以找到如何将字符串转换为整数,但相反的方法似乎不起作用。出现此错误(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() 
4

1 回答 1

0

看起来zScore将是一个浮动。正如您的错误消息所暗示的那样, to 的第二个参数必须map()可迭代的(例如 alist或)。strtuple

除非我遗漏了什么,否则zScore它总是一个单一的值,所以你可以简单地逃脱:

str(zScore)

我不确定您打算zScore稍后在程序中如何使用,但从您在示例中的内容来看,我认为 using 没有任何优势map,除非您需要应用于str值列表或元组。

但是,如果您只是希望当前代码停止引发相关错误,请尝试替换此代码:

zScore = list(map(str, zScore)) 

有了这个:

zScore = map(str, [zScore]) 

此外,map()将返回一个迭代器,因此无需调用list()结果,除非您需要一次获取所有值。

于 2016-12-17T02:21:34.973 回答