Multi variable List Comprehension

Arbeite ich an Projekt Euler #35, und ich muss die zirkuläre Permutationen, eine Zahl. Mit itertools, kann ich leicht die Permutationen, eine Zahl. Jedoch, ich will es tun, mit einer Liste Verständnis, wie es scheint, mehr Pythonic; ich versuche auch, mir vertraut zu machen mit der Liste Verstehens).

Fand ich, dass alle kreisförmigen Primzahlen können nur die Ziffern 1, 3, 7 und 9 (mit Ausnahme von 2 und 5, die kreisförmige Primzahlen-definition). Wenn eine andere Ziffer war in der Nummer (0, 2, 4, 5, 6, oder 8) eine der Permutationen, wäre nicht ein prime (wie die Ziffer wäre die Letzte, die in mindestens eine der Permutationen).

So, ich habe versucht, dies zu tun:

from itertools import permutations
l = [x for x in list(permutations('1397', y)) for y in range(7)]

Ich brauchte, um y for y in range(7) so, dass ich unterschiedliche Längen Permutationen.

Jedoch, dies gab mir eine TypeError:

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    l = [x for x in list(permutations('1397', y)) for y in range(7)]
TypeError: an integer is required

Dies funktioniert, aber es ist nicht die Verwendung von zwei Variablen in einer Liste Verständnis:

l = []
for y in range(7):
    l.append([x for x in list(permutations('1379', y))])

Wie kann ich eine double-variable list comprehension? Danke!

Tipp: verschachtelte Liste Verstehens haben die gleichen for um geschachtelte Schleifen. for y in range(7): for x in permutations('1397', y): newlist.append(x) wird newlist = [x for y in range(7) for x in permutations('1397', y)].
list(permutations('1379', y)) ist bereits eine Liste mit der for-Schleife: [x for x in list(permutations('1379', y))] ist nutzlos.
Sie sollte nicht mit itertools.permitations überhaupt. Das problem ist zu finden, zirkuläre Permutationen, die eine Besondere Art der permutation. Es ist viel einfacher zu generieren, die Sie direkt ohne itertools.permutation (Sie benötigen, um Ergebnisse zu filtern sonst). Auch mit speziellen python-Standard-library-Funktionen ist nicht geeignet für übungen wie die, die Sie zu lösen versuchen

InformationsquelleAutor Rushy Panchal | 2013-01-19

Schreibe einen Kommentar