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 は、タプルが 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]
于 2013-02-12T22:38:07.020 に答える
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 に答える