将字符串转换为整数

时间:2013-09-28 12:58:52

标签: python list integer sum

我刚开始编程,我知道我仍然缺少一些基础知识,但我正在努力解决这个问题。我有一个由文本文件引入的3位和4位数字列表,我正在尝试得到这些数字的总和。到目前为止我所能得到的python都是执行每个单独数字的总和,所以如果列表中的第一个数字是427,则打印13,而不是添加427 + 504 + 219等。

这就是我所拥有的:

myList = []
inFile = open('E:/GIS/GTECH 731/NYCElementarySchools.txt', 'r')
for row in inFile:
    col = row.split('\t')
    if col[1]=='BK':
        myList = (col[3])
        intList = [int(x) for x in myList]
        print sum(intList)

此外,当我有打印长度时,它会给我一个3和4的列表,告诉我每个数字的长度,而不是给我总数。

我必须遗漏一些基本的东西,但我不知道它是什么!任何建议表示赞赏!谢谢!

3 个答案:

答案 0 :(得分:1)

此:

myList = (col[3])

会将myList设置为str,而不是list,这将代表一个数字。因此:

intList = [int(x) for x in myList]

会将数字转换为数字。您希望int(myList)将整个字符串转换为数字。


您可以保持运行总计(初始化为0)并执行total += int(myList)以计算所有数字的总和。然后循环之后,您可以print结果。

答案 1 :(得分:1)

在您的代码中:

col = row.split('\t')
if col[1]=='BK':
    myList = (col[3])
    intList = [int(x) for x in myList]
    print sum(intList)

'col = row.split('\ t')'生成一个由TAB除的列表。

如果从文件中读取的行如下所示:

# \t is TAB
SOMETHING\tBK\t1\t2\t3

col结构是:

col[0] = SOMETHING
col[1] = BK
col[2] = 1
col[3] = 2
col[4] = 3

所以,如果你打算将col [3]加到col [...]然后使用col [3:] = col [3]列表,col [4]

因此,如果你想累积和结果,你需要另一个变量。

myList = []
inFile = open('E:/GIS/GTECH 731/NYCElementarySchools.txt', 'r')
sumList = []
for row in inFile:
    row_total = 0
    col = row.split('\t')
    if col[1]=='BK':
        intList = [int(x) for x in col[3:]]
        row_sum = sum(intList)
        # row_sum = map(lambda x: int(x), col[3:])
        print 'row total: %d' % (row_sum)
        sumList.append(row_sum)

print 'total: %d' % (sum(sumList))

答案 2 :(得分:0)

您可能希望使用切片来指定myList

myList = col[3:]

这将返回列表中第3列的所有内容。