im for befehl mehrere variablen unterbringen???

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Cthulhu
User
Beiträge: 38
Registriert: Freitag 17. November 2006, 16:00

Freitag 29. Dezember 2006, 16:58

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!
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 29. Dezember 2006, 17:08

Hi

Code: Alles auswählen

from itertools import izip 
for x,y in izip(liste1, liste2):
    print x,y
Als liste1 und liste2 kannst du natürlich auch range(a,b) nehmen.

Gruss
BlackJack

Freitag 29. Dezember 2006, 17:09

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.

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
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?
Benutzeravatar
Luzandro
User
Beiträge: 87
Registriert: Freitag 21. April 2006, 17:03

Freitag 29. Dezember 2006, 17:31

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

Code: Alles auswählen

[(p,q) for p in range(a) for q in range(b)]
aber damit eine Liste erzeugen und darüber wieder mit for iterieren wäre IMHO schon etwas pervers...
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
cracki
User
Beiträge: 72
Registriert: Montag 25. Dezember 2006, 05:01

Freitag 29. Dezember 2006, 17:33

Code: Alles auswählen

for u in range(fnord):
    for v in range(fnord):
        print u,v
oder so:

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...
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Freitag 29. Dezember 2006, 21:20

Was spricht gegen die variante von rayo oder BlackJack?

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
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.
Benutzeravatar
Luzandro
User
Beiträge: 87
Registriert: Freitag 21. April 2006, 17:03

Freitag 29. Dezember 2006, 21:57

sape hat geschrieben:Was spricht gegen die variante von rayo oder BlackJack?

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
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.
kommt drauf an, was er erreichen will - so wie ich es interpretiert habe, will er eine kürzere form für

Code: Alles auswählen

for x in range(10):
    for y in range(100,110):
            print x,y
und das ist etwas anderes
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
BlackJack

Freitag 29. Dezember 2006, 22:04

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.
Cthulhu
User
Beiträge: 38
Registriert: Freitag 17. November 2006, 16:00

Freitag 5. Januar 2007, 22:47

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!
BlackJack

Freitag 5. Januar 2007, 23:55

Mit der *selben* Zahl? Und das heisst Prim und nicht Priem. Es sei denn es gibt wirklich Kautabak-Zahlen. :-)
Cthulhu
User
Beiträge: 38
Registriert: Freitag 17. November 2006, 16:00

Samstag 6. Januar 2007, 14:11

gibt bestimmt kautabbak in zahlenform
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Samstag 6. Januar 2007, 14:27

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
Aber wo ist da der Sinn, das x und y jeweils die gleiche Zahl haben?

Dan kannst du ja gleich das schreiben:

Code: Alles auswählen

y = 0
for x in xrange(10):
    y = x
    print x, y
lg
Antworten