如何将元组转为整数(Python示例)?
我有一个元组的列表:
"(1,2,3), (2,3,1)..."
我想把它转换成一个整数的列表:
"123, 231..."
我该怎么做呢?谢谢!
3 个回答
1
比@Luke的方案简单一些
[sum(x * 10**i for i, x in enumerate(t[1][::-1])) for t in tuples]
它的计算方式就是把所有的数加起来,比如 x1 + x2 * 10^2 + ... + xN * 10^n
[::-1]
是用来反转元组的,使用enumerate可以得到(xN, N)这样的配对。
2
这样怎么样:
[int(''.join(str(i) for i in t)) for t in tuples]
4
这里有一种更实用的方法:
[reduce(lambda a, x: a * 10 + x, t) for t in tuples]
补充说明:
为了好玩,我做了一个小测试,和JBernardo的答案进行对比:
In [21]: %timeit [int(''.join(str(i) for i in t)) for t in tuples]
100000 loops, best of 3: 7.54 us per loop
In [22]: %timeit [reduce(lambda a, x: a * 10 + x, t) for t in tuples]
1000000 loops, best of 3: 1.55 us per loop
补充说明 2:
Akavall指出我最开始的答案只适用于包含单个数字的元组。
如果这对你的需求来说不合适,JBernardo的答案可能是更简单的解决方案。不过就为了好玩:
[reduce(lambda a, x: a * 10**(len(str(x))) + x, t) for t in tuples]
或者根本不进行任何字符串转换:
from math import log10
[reduce(lambda a, x: a * 10**(int(log10(x))+1) + x, t) for t in tuples]