如何将元组转为整数(Python示例)?

1 投票
3 回答
1355 浏览
提问于 2025-04-17 15:40

我有一个元组的列表:

"(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]

撰写回答