Python,int()参数必须是字符串错误

时间:2018-02-19 12:27:14

标签: python

我的代码应该读取矩阵中的每一行,并将其转换为距离矩阵中的一行数字:

for i in range(dim):
   row = []
   for j in range(dim):
        line = f.readline()
        words = line.split()
        row.append(int(words))

distances.append(row)

但每次我尝试运行它时都会出现此错误: TypeError:int()参数必须是字符串,类字节对象或数字,而不是' list'

我不知道造成这种情况的原因。有什么想法吗?

4 个答案:

答案 0 :(得分:0)

根据错误代码 - wordslist个对象 - 尝试将list[index]传递给int()个来电,而不是一次传递整个列表。

答案 1 :(得分:0)

你可以使用这样的地图功能:

row.append(map(lambda item: int(item)), words)

答案 2 :(得分:0)

  

我不知道造成这种情况的原因。有什么想法吗?

错误信息非常明确:

  

TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是' list'

确实:

 words = line.split()
 row.append(int(words))

str.split()会返回list

我强烈建议you read this and put it into practice而不是发布有关这样一个小问题的问题。

答案 3 :(得分:-1)

用你的话说,你可能有一个列表对象。 (['word1', 'word2'])等 您必须在列表中的每个出现时调用int()方法。

通过

更改行row.append(int(words))
[row.append(int(word)) for word in words]

假设所有单词都是可以转换为整数的字符串。