タプルのリストがあります:
「(1,2,3)、(2,3,1)...」
これを整数のリストに変更したいと思います。
「123、231...」
どうすればこれを行うことができますか?前もって感謝します。
より機能的なアプローチ:
[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 は、タプルが 1 桁の整数のみを含む場合にのみ、私の元の回答が機能することを指摘しました。
これがあなたのユースケースで受け入れられない場合、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]
@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) ペアを取得します。