如果list
整数表示基数b
中数字的数字,如何将此list
转换为int
任何b
最有效率的?
numlist = [1, 2, 3, 4, 5]
def list2int(numList, b):
if b == 10: return int(''.join(map(str, numList)))
else: ?
print list2int(numList, 7)
>>> 3267
我只能想到这种天真的做法,但这种做法非常可怕。
def list2int(numList, b):
num = 0
for i, ii in enumerate(numList): num += ii * b**(len(numList) - i - 1)
return num
有没有更好的方法?
答案 0 :(得分:5)
您可以使用reduce
:
In [3]: reduce(lambda x,y:7*x+y, numlist)
Out[3]: 3267
其中7
是基础。
答案 1 :(得分:3)
您可以将基数传递给int()
,但这只能用于基数36:
>>> int(''.join(map(str, numlist)), 7)
3267
>>> int(''.join(map(str, numlist)), 15)
58115
>>> int(''.join(map(str, numlist)), 36)
1776965