包含正整数和负整数的字符串的和



我有一个字符串,比如"12-569-8",我想把它分成一个负整数和正整数的列表,这样我就可以把它们加在一起——比如

list = ['1', '2', '-5', '6', '9', '-8']

其中总和将是5。我大部分时间都在为拆分列表而挣扎。

一种可能的方法是使用正则表达式,并匹配两个数字或前面有负号的数字:

s = "12-569-8"
import re
sum(map(int,re.findall(r'(d|-d)', s)))
# 5

另一种方法,正如评论中的prune所提到的,是在字符上循环,并根据您的发现进行加法或减法:

res = 0
i=0
while i < len(s):
x = s[i]
if x != '-':
res += int(x)
else:
i += 1
res -= int(s[i])
i += 1
print(res)
# 5

如果不想使用导入,可以用空格分隔所有字符,并删除减号后的空格。然后在空格上拆分字符串,每个数字都会被正确解释:

s = "12-569-8"
c = " ".join(s).replace("- ","-") # space out, remove space after minus
n = list(map(int,c.split()))      # split and convert to integers 
print(c) # '1 2 -5 6 9 -8'
print(n) # [1, 2, -5, 6, 9, -8]

最新更新