Zum Forum springen
Benachrichtigungen
Alles löschen

[Geschlossen] Java-Schleife in Python umwandeln

4 Beiträge
3 Benutzer
0 Reactions
349 Ansichten
Arwed
Beigetreten: 19.09.2007
Oldschool Grinder
edges = ";".join(["{0},{1},{2}".format(i+1,j+1,0) for i in range(n) for j in range(n) if i < j])

Der Code erzeugt alle Kanten eines vollständigen Graphens in Python.
Möchte jetzt aber keinen vollständigen Graphen, sondern nur alle Knoten mit ungeradem Index mit allen Knoten mit höherem Index verbinden.
Komme mit dem Python-Code nicht klar. Wozu gehören die for-Schleifen, wozu die if-Abfrage etc.

Wie ichs mir in java vorstelle:

for(int i = 1; i <= n; i++)
  if (i % 2 != 0)
    for (int j = i + 1; j <= n; j++)
      doSomething;

Kann wer den Python-Code entsprechend verändern?


3 Antworten
TheDoener
Beigetreten: 06.04.2010
PokerStrategist

also die untere geschalte schleife schaut ungefähr so aus:

for i in range(n):
   if (i+1) %2 != 0:
     for k in range(n-i):
       j = i+k
       doSomething

alternativ auch:

for i in range(n):
   for j in range(n):
      if j>i and (i+1)%2 != 0:
        doSomething

Zweiteres läuft halt die n-Schleife zweimal ganz durch. Oder funktioniert die erste Zeile Code bei Dir? Dann sollte doch die Anpassung "if (i<j and i+1%2 == 0)" ausreichen.


MisterJ
Beigetreten: 26.03.2006
PokerStrategist

schreib hinters if einfach die abfrage ... i < j and i ungerade.

Die Schleifen dort sind list comprehensions:
http://docs.python.org/tutorial/datastructures.html


Arwed Themenstarter
Arwed
Beigetreten: 19.09.2007
Oldschool Grinder

thx die Dokumentation hat geholfen.
i < j and i ungerade reicht schon.


Teilen: