|
Autor |
Python Durchlaufproblem bei Liste |
|
Bekell
Aktiv  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  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  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  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  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  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  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  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  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. |
|
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]
|