我有一个元组列表:
"(1,2,3),(2,3,1)..."
我想将其更改为整数列表:
" 123,231 ..."
我该怎么做呢?提前谢谢。
答案 0 :(得分: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]
答案 1 :(得分:2)
怎么样:
[int(''.join(str(i) for i in t)) for t in tuples]
答案 2 :(得分: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)对。