/ / Wie verwandle ich ein Tupel in eine Ganzzahl in Python (Beispiele darin)? - Python, Ganzzahl, Tupel

Wie verwandelt man ein Tupel in Python in eine Ganzzahl (Beispiele darin)? - Python, Integer, Tupel

Ich habe eine Liste von Tupeln:

(1,2,3), (2,3,1) ...

Ich möchte dies in eine Liste von ganzen Zahlen ändern:

"123, 231 ..."

Wie kann ich das machen? Danke im Voraus.

Antworten:

4 für die Antwort № 1

Ein funktionaler Ansatz:

[reduce(lambda a, x: a * 10 + x, t) for t in tuples]

bearbeiten:

Nur zum Spaß ein kleiner Maßstab gegen JBernardos Antwort:

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

Edit 2:

Akavall wies darauf hin, dass meine ursprüngliche Antwort nur funktioniert, wenn die Tupel ausschließlich einstellige Zahlen haben.

Wenn dies für Ihren Anwendungsfall nicht akzeptabel ist, ist die Antwort von JBernardo wahrscheinlich eine einfachere Möglichkeit, dies zu tun. Aber nur zum Spaß:

[reduce(lambda a, x: a * 10**(len(str(x))) + x, t) for t in tuples]

oder ganz ohne String-Konvertierungen:

from math import log10
[reduce(lambda a, x: a * 10**(int(log10(x))+1) + x, t) for t in tuples]

2 für die Antwort № 2

wie wäre es mit:

[int("".join(str(i) for i in t)) for t in tuples]

1 für die Antwort № 3

Weniger komplex als bei @Luke

[sum(x * 10**i for i, x in enumerate(t[1][::-1])) for t in tuples]

Es summiert sich wie x1 + x2 * 10 ^ 2 + ... + xN * 10 ^ n

[::-1] - Um das Tupel umzukehren, aufzählen, um (xN, N) Paare zu erhalten.