1

我有一个元组列表:

“(1,2,3),(2,3,1)......”

我想将其更改为整数列表:

“123、231……”

我该怎么做呢?提前致谢。

4

3 回答 3

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]
于 2013-02-12T22:38:07.020 回答
2

怎么样:

[int(''.join(str(i) for i in t)) for t in tuples]
于 2013-02-12T22:33:42.670 回答
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]- 反转元组,枚举得到 (xN, N) 对。

于 2013-02-12T22:58:37.660 回答