我想总结一下字符串列表。我试图通过使用for循环和int()将字符串转换为整数。但这没有用。我该怎么办?谢谢您的回答!
a = ['1','2','3']
total = 0
for i in a:
int(i)
total = total + i
print(total) #expected output:6
答案 0 :(得分:8)
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。我在这里也使用了列表理解,您可能并不熟悉。它们确实很有用,我建议您学习它们。