加入整数列表

时间:2017-05-31 00:35:45

标签: python

问题:设计一个将字符串转换为整数的算法:

我的方法:

string = '1221'
dictionary = {'1':1,'2':2}

string2 = [dictionary[w] for w in string] 

print "".join(string2)

这段代码不起作用,因为(显然)join()是一个字符串函数。如果它们都是整数,我如何加入列表的元素? (不能使用str()和int())

3 个答案:

答案 0 :(得分:2)

我们可以使用加法和乘法来实现这一点。

s = '1234'
ans = 0

for c in s:
    ans = ans*10 + ord(c)-ord('0')

print(ans)

此方法可行,因为1234 =((1 * 10 + 2)* 10 + 3)* 10 + 4.

As' 0' 〜' 9'在ascii中是连续的,因此我们可以使用ord(c)-ord('0')来获取数字的值。

修改

如果您想从string2

获取int,情况也是一样的
string = '1221'
dictionary = {'1': 1, '2': 2}
string2 = [dictionary[w] for w in string]
ans = 0

for x in string2:
    ans = ans*10 + x

print(ans)

答案 1 :(得分:1)

def atoi(s): # ASCII to Integer, a "traditional" name for such function
    return sum(10**(len(s)-p-1) * (ord(x) - ord('0')) for p,x in enumerate(s))

atoi("123")
#123

答案 2 :(得分:0)

如果每个字符都是数字字符,则int函数会将字符串转换为整数

int('1221')