如何在Python中将字符串类型二维列表转换为整数类型二维列表
问题分析
你遇到的错误是因为从CSV读取的二维列表元素都是字符串类型,而yearly函数里试图把字符串加到整数total上,导致类型不匹配。下面是几种简单的解决方法:
解决方法1:读取CSV时直接转换为整数(推荐)
修改populate2D函数,在分割每行数据后,将每个元素转换为整数。这样后续所有操作都能直接使用数值类型:
rows = 52 cols = 7 def populate2D(): with open("rainfall.csv","r") as file: lineArray = file.read().splitlines() matrix = [] for line in lineArray: # 分割后逐个转换为整数 row = [int(num) for num in line.split(",")] matrix.append(row) return matrix def display(matrix): print(matrix) def yearly(matrix): total = 0 for row in matrix: for value in row: total += value return total matrix = populate2D() display(matrix) total = yearly(matrix) print() print("Total rainfall for the year is " + str(total))
解决方法2:计算总和时临时转换
如果不想修改读取数据的函数,可以在yearly函数里把每个字符串转换为整数再相加:
def yearly(matrix): total = 0 for row in matrix: for value in row: total += int(value) # 转换为整数后累加 return total
解决方法3:加载数据后批量转换矩阵
如果已经有了字符串类型的矩阵,也可以用嵌套列表推导式一次性转换所有元素:
matrix = populate2D() # 转换为整数矩阵 int_matrix = [[int(num) for num in row] for row in matrix] total = yearly(int_matrix)
运行结果
修正后运行代码,会正确计算出总降雨量,不再抛出类型错误。
内容的提问来源于stack exchange,提问作者Mateo
相关产品推荐
相关产品推荐

