我应该如何将字符串转换为整数并对列表求和?

时间:2018-11-17 16:44:02

标签: python

我想总结一下字符串列表。我试图通过使用for循环和int()将字符串转换为整数。但这没有用。我该怎么办?谢谢您的回答!

a = ['1','2','3']
total = 0
for i in a:
    int(i)
    total = total + i

print(total) #expected output:6

5 个答案:

答案 0 :(得分:8)

使用sum()map()将每个项目映射到int:

a = ['1','2','3']

print(sum(map(int, a)))
# 6

int(i)不会改变i,除非您将其分配回来。因此您的代码应为:

for i in a:
    i = int(i)
    total = total + i

或者,不久之后:

for i in a:
    total = total + int(i)

答案 1 :(得分:2)

a = ['1','2','3']
total = 0
for i in a:
    total = total + int(i)

答案 2 :(得分:2)

我不知道为什么每个人都建议循环。 Imo的pythonic方式如下:

total = sum([int(x) for x in a])

与使用for循环方法的total +=...相比,RAM可能要重一些,但我想它会更快。

编辑: 正如@tevemadar指出的,您实际上可以做到:

total = sum((int(x) for x in a))

将列表理解更改为一个生成器,然后将其求和,这是一个更好的解决方案,因为它不必将列表作为一个整体保存在内存中。

EDIT2: 第二种解决方案要注意的是,在定义a之后更改total实际上会影响total

答案 3 :(得分:1)

(执行评论)
int(i)返回整数值,i仍然是之前的字符串。
您需要total = total + int(i)

a = ['1','2','3']
total = 0
for i in a:
    total = total + int(i)

print(total) # output:6

答案 4 :(得分:1)

find . -type d -maxdepth 1 -exec zip -r {}.zip {} \;str数据类型是不可变的,因此在它们上调用的函数永远不能修改其值

因此,int函数无法修改for循环nor is it supposed to.中的int()变量

结果,i函数被设计为返回一个新的整数,因此您必须将其分配到某个位置,否则它将“丢在虚空中”。

int()

请注意,学习这些算法(虽然很简单)是一种很好的做法,这些算法用于对列表,字符串等进行操作,但是如果您急于使用sum()内置函数,就可以使用!

a = ['1', '2', '3']
total = 0
for i in a:
    total = total + int(i)

print(total)

N.B。我在这里也使用了列表理解,您可能并不熟悉。它们确实很有用,我建议您学习它们。