kann man in einem for befehl irgendwie 2 variablen unterbringen??
folgendes hab ich shcon versucht hat abe nricht funktioniert:
for p and q in range (a,b)
for p,q in range (a,b)
for p in range (a,b) and q in range (a,b)
das hat alles nicht funktioniert!
hofe auf shcnelle hilfe!
im for befehl mehrere variablen unterbringen???
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
Hi
Als liste1 und liste2 kannst du natürlich auch range(a,b) nehmen.
Gruss
Code: Alles auswählen
from itertools import izip
for x,y in izip(liste1, liste2):
print x,y
Gruss
Die Variante ``for p, q in iterable:`` funktioniert, allerdings musst Du dafür über Elemente iterieren, die sich auf auf zwei Namen "verteilen" lassen, also zum Beispiel Tupel.
Was sollte denn Deine Schleife für eine Bedeutung haben, also was hättest Du erwartet an was `p` und `q` in jedem Schleifendurchlauf gebunden sind?
Code: Alles auswählen
In [4]: for p, q in ((1, 2), (42, 23)):
...: print '%s und %s' % (p, q)
...:
1 und 2
42 und 23
Mit zip (und wohl auch izip) fasst du immer die Elemente an einem bestimmten index zusammen, also bei range dann (0,0), (1,1), etc. was wohl nicht wirklich das ist, was Cthulhu will...
Mit list-comprehension kann man sowas machen
aber damit eine Liste erzeugen und darüber wieder mit for iterieren wäre IMHO schon etwas pervers...
Mit list-comprehension kann man sowas machen
Code: Alles auswählen
[(p,q) for p in range(a) for q in range(b)]
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
Code: Alles auswählen
for u in range(fnord):
for v in range(fnord):
print u,v
Code: Alles auswählen
def fnord(s1, s2):
for u in s1:
for v in s2:
yield u,v
for quux in fnord(range(10), range(100, 110)):
print quux
...meh...
Was spricht gegen die variante von rayo oder BlackJack?
Wenn ich über mehrere iterables iterieren will, benutze ich immer `izip` weils die sauberste und einfachste Lösung ist. Extra eine eigene Funktion schreiben die im grunde das gleiche macht ist mMn unnötig.
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
from itertools import izip
for x,y in izip(range(10), range(100,110)):
print x,y
kommt drauf an, was er erreichen will - so wie ich es interpretiert habe, will er eine kürzere form fürsape hat geschrieben:Was spricht gegen die variante von rayo oder BlackJack?
Wenn ich über mehrere iterables iterieren will, benutze ich immer `izip` weils die sauberste und einfachste Lösung ist. Extra eine eigene Funktion schreiben die im grunde das gleiche macht ist mMn unnötig.Code: Alles auswählen
#!/usr/bin/python # -*- coding: utf-8 -*- from itertools import izip for x,y in izip(range(10), range(100,110)): print x,y
Code: Alles auswählen
for x in range(10):
for y in range(100,110):
print x,y
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
Ich habe den Verdacht das er etwas ganz anderes will wenn ich daran denke dass das Fernziel, das herausfinden von Primzahlzwillingen sein könnte. Aber bevor wir weiter herumraten ob zwei Listen gepaart werden sollen oder das kartesische Produkt von einem Zahlenbereich gefragt ist, sollte er vielleicht einfach sagen was er möchte.
ja es handelt sich um das herausfinden von priemzahlzwillingen!
und dafür rbäuchte ich das halt eben so dass 2 variablen in einem for befehl mit der selber zahl definiert werden!
ich weiß hört sich sinnlos an aber ich rbauch das so!
und dafür rbäuchte ich das halt eben so dass 2 variablen in einem for befehl mit der selber zahl definiert werden!
ich weiß hört sich sinnlos an aber ich rbauch das so!
und dafür rbäuchte ich das halt eben so dass 2 variablen in einem for befehl mit der selber zahl definiert werden!
Code: Alles auswählen
from itertools import izip
for x, y in izip(xrange(10), xrange(10)):
print x, y
Code: Alles auswählen
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
Dan kannst du ja gleich das schreiben:
Code: Alles auswählen
y = 0
for x in xrange(10):
y = x
print x, y