将整数列表转换为单个值

时间:2011-09-03 13:28:24

标签: python

如果我有整数列表说,

x = [1,2,3,4,5]

是否有内置功能可以将其转换为12345这样的单个数字?如果没有,最简单的方法是什么?

4 个答案:

答案 0 :(得分:5)

>>> listvar = [1,2,3,4,5]
>>> reduce(lambda x,y:x*10+y, listvar, 0)
12345

答案 1 :(得分:4)

如果他们是这样的数字,

sum(digit * 10 ** place for place, digit in enumerate(reversed(x)))

答案 2 :(得分:2)

int("".join(str(X) for X in x))

你还没有告诉我们x = [1, 23, 4]的结果应该是什么...... 我的答案给出1234,其他给出了334

答案 3 :(得分:1)

只是为了好玩:)

int(str(x)[1:-1].replace(', ', ''))

令人惊讶的是,大型列表的速度更快:

$ python -m timeit -s "x=[1,2,3,4,5,6,7,8,9,0]*100" "int(str(x)[1:-1].replace(', ', ''))"
10000 loops, best of 3: 128 usec per loop

$ python -m timeit -s "x=[1,2,3,4,5,6,7,8,9,0]*100" "int(''.join(map(str, x)))"
10000 loops, best of 3: 183 usec per loop

$ python -m timeit -s "x=[1,2,3,4,5,6,7,8,9,0]*100" "reduce(lambda x,y:x*10+y, x, 0)"
1000 loops, best of 3: 649 usec per loop

$ python -m timeit -s "x=[1,2,3,4,5,6,7,8,9,0]*100" "sum(digit * 10 ** place for place, digit in enumerate(reversed(x)))"
100 loops, best of 3: 7.19 msec per loop

但是对于非常小的列表(可能更常见?),这个是最慢的。