Matroids Matheplanet Forum Index
Moderiert von Bilbo
Matroids Matheplanet Forum Index » Informatik » Python Durchlaufproblem bei Liste
Autor
Kein bestimmter Bereich Python Durchlaufproblem bei Liste
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3145
  Themenstart: 2023-02-02

Hallo, hab ein Programmierungsproblem: Es gibt eine Liste, da sind gewisse Zahlen in gewisser Reihenfolge drin. liste=[1,7,6,4,3,6,8,1,7] wenn ich jetzt die Liste 1 mal durchlaufen lassen will, schreib ich for x in Liste: Was aber mach ich, wenn er sie immer und immer in derselben Reihenfolge wieder durchlaufenlassen soll, bis auf eine äussere Bedingung.... grübel, grübel .....


   Profil
DavidM
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.06.2012
Mitteilungen: 410
  Beitrag No.1, eingetragen 2023-02-02

Hallo Bekell, vielleicht nicht unbedingt die schönste Lösung, aber funktionieren sollte es: \sourceon Python index=0 n=len(liste) while (...): x=liste[index] ... index=(index+1)%n \sourceoff Bei dem ersten ... kannst du dann deine Bedingung einfügen, beim zweiten ..., das was du in der Schleife mit x tun möchtest. Gruß, David


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4428
  Beitrag No.2, eingetragen 2023-02-02

Liste einmal durchlaufen: \sourceon python for x in liste: ... \sourceoff Liste wieder und wieder durchlaufen: \sourceon python from itertools import cycle for x in cycle(liste): ... \sourceoff Beispiel: \sourceon python from itertools import cycle s = 0 for x in cycle([4, 7]): s += x if s > 50: break print(s) \sourceoff --zippy


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3145
  Beitrag No.3, vom Themenstarter, eingetragen 2023-02-03

DANKE! so einfach scheint das nicht zu sein.... \sourceon Python \numberson from itertools import cycle nr=0 for x in cycle([0,1,2,3]) and y in cycle([4,5,6,7,8]): nr+=1 print(nr,x,y) if nr == 20: break \sourceoff wenn ich zwei for's mache, bewegt sich im ersten logischerweise nichts, weil die zweit iim Cycle ist. Aber, so, wie ich es schreibe, versteht er es auch nicht....


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4428
  Beitrag No.4, eingetragen 2023-02-03

\quoteon(2023-02-03 16:01 - Bekell in Beitrag No. 3) \sourceon Python for x in cycle([0,1,2,3]) and y in cycle([4,5,6,7,8]): \sourceoff \quoteoff Was soll denn dieses "and" bedeuten? Über was willst du iterieren?


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3145
  Beitrag No.5, vom Themenstarter, eingetragen 2023-02-03

\quoteon(2023-02-03 17:33 - zippy in Beitrag No. 4) \quoteon(2023-02-03 16:01 - Bekell in Beitrag No. 3) \sourceon Python for x in cycle([0,1,2,3]) and y in cycle([4,5,6,7,8]): \sourceoff \quoteoff Was soll denn dieses "and" bedeuten? Über was willst du iterieren? \quoteoff Ich hab es ohne cycle gelöst. Mit wäre mir aber lieber. \sourceon Python \numberson for i in range(323): lnr+=1 a=p17r[i % len(p17r)] b=p19r[i % len(p19r)] if a in a17 and b in a19: #print(lnr,"\033[91m",a,"\033[0m","\033[34m",b,"\033[0m") pass if a in a17 and b not in a19: #print(lnr,"\033[91m",a,"\033[0m",b) pass if a not in a17 and b in a19: #print(lnr,a,"\033[34m",b, "\033[0m") pass if a not in a17 and b not in a19: ldr+=1 print(ldr,lnr,a,b) \sourceoff


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4428
  Beitrag No.6, eingetragen 2023-02-03

Dann suchts du wohl so etwas: \sourceon python for (x, y) in zip(cycle([1, 2]), cycle([6, 7, 8])): ... \sourceoff


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3145
  Beitrag No.7, vom Themenstarter, eingetragen 2023-02-03

\quoteon(2023-02-03 17:52 - zippy in Beitrag No. 6) Dann suchts du wohl so etwas: \sourceon python for (x, y) in zip(cycle([1, 2]), cycle([6, 7, 8])): ... \sourceoff \quoteoff Danke, das isses, man kann sicherlich mehrere Cycles verschachteln, nicht nur 2, oder?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4428
  Beitrag No.8, eingetragen 2023-02-03

\quoteon(2023-02-03 19:29 - Bekell in Beitrag No. 7) man kann sicherlich mehrere Cycles verschachteln, nicht nur 2, oder? \quoteoff Ja, zip() verknüpft beliebig viele Objekte, über die man iterieren kann. (Das müssen nicht notwendigerweise welche sein, die von cycle() erzeugt wurden.)


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]