Hallo Zusammen,
da ich Neuling in Python bin, hab ich wahrscheinlich nur ein Verständnis Problem.
Ich kenne die for-Schleife so:
for(x=0 ; x < len(dateien); x++){
Schleifenanweisung
}
Ich wollte jetzt in Python so was auch schreiben , klappt aber nicht wie ich mir das wohlö gedacht hatte.
Code:
dateien=[{'Maus': 'xxxx', 'Ratte': 'aaaa' }, {'Maus': 'www', 'Ratte': 'asadaa' }, {'Hund': 'rrrr', 'Hase': 'ssss' }]
for jedes_Element in dateien:
jedes_Element = 0 # Sollte der Startwert sein
while jedes_Element < len(dateien)
gleichekeys=set(dateien[jedes_Element].keys()) &
set(dateien[jedes_Element+1].keys())
jedes_Element +=1
Es geht darum das x wie in der 1. For Schleife als Indizie verwendet wird.
Ich habe zwar was gefunden
for x in range(len(datei)):
Aber dies klappt auch nicht so.
Danke schon mal im vorrraus.
gruss gurami
Verständnis zur for-Schleife
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Ähm, versuche nicht die C-Schleifen abzubilden auf Python-Schleifen. Python iteriert über Elemente des Iterators, nicht über Indizes (was auch viel mehr Sinn macht). Falls du wirklich einen Index brauchst, dann verwende `enumerate`.
Gruß
Gruß
Code: Alles auswählen
namen = ["Angela", "Frank Walter", "Guido", "Gregor", "Renate"]
for i, name in enumerate(namen):
print i, name
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Vor allem mal das Tutorial durcharbeiten! Genau dort werden alle diese grundlgenden Dinge besprochen.
http://docs.python.org/tutorial/
http://docs.python.org/tutorial/
Man braucht weder `enumerate()` noch Indizes:
Code: Alles auswählen
from itertools import islice, izip
def main():
dateien = [{'Maus': 'xxxx', 'Ratte': 'aaaa'},
{'Maus': 'www', 'Ratte': 'asadaa'},
{'Hund': 'rrrr', 'Hase': 'ssss'}]
for datei_a, datei_b in izip(dateien, islice(dateien, 1, None)):
same_keys = set(datei_a) & set(datei_b)
print same_keys
if __name__ == '__main__':
main()
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
BlackJack, dein Codebeispiel war sinnlos. Es ist doch sehr einfach zu erkennen, das der OP ein Einsteiger ist.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hui... ich sehe einen Diskussions-Thread auf uns zukommenDauerbaustelle hat geschrieben:BlackJack, dein Codebeispiel war sinnlos. Es ist doch sehr einfach zu erkennen, das der OP ein Einsteiger ist.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Und Einsteiger haben kein Recht auf interessanten Code? Was hast du denn gegen Einsteiger?Dauerbaustelle hat geschrieben:Es ist doch sehr einfach zu erkennen, das der OP ein Einsteiger ist.
@Hyperion: Ack.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Meiner Meinung nach lässt sich eine Programmiersprache durch lesen und nachvollziehen von Code besser lernen als durch "stumpfes" Durchackern der Doku (das Tut natürlich ausgeschlossen). Wenn man etwas nicht verstanden hat, kann man nachfragen oder googlen oder ... .
Ich sehe da also kein Problem (sondern etwas positives), Dauerbaustelle.
Ich sehe da also kein Problem (sondern etwas positives), Dauerbaustelle.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Einsteiger sind ein eiternder Abszess am Hinter der Menschheit! Weg mit ihnen!Leonidas hat geschrieben:Was hast du denn gegen Einsteiger?
Ernst beiseite,
doch, aber ich bin überzeugt davon, dass der OP damit nichts bis sehr wenig anfangen kann, weil seine Übung in Python vermutlich zu gering ist, um in der Schleifendefinition eine Iteration mit jeweils den Elementen x[n] und x[n+1] zu erkennen.Leonidas hat geschrieben:Und Einsteiger haben kein Recht auf interessanten Code?
Btw, gab es nicht mal sowas wie `pairwise` in den itertools? Das so fungiert wie `reduce`, nur ohne reduce? :D
@Dauerbaustelle: Aber man kann doch einfach die Dokumentation von den verwendeten Funktionen lesen und die einzelnen Teile in einer Python-Shell ausprobieren. Ich finde meinen Code überhaupt nicht sinnlos, weil er zeigt, wie man das ohne diese hässlichen Indizes machen kann.
*Mit* Indizes sollte man das auch ohne Hilfe hinbekommen. Wer das nach einer Einführung in Schleifen und die Grunddatentypen nicht schafft, sollte die Finger vom Programmieren lassen.
*Mit* Indizes sollte man das auch ohne Hilfe hinbekommen. Wer das nach einer Einführung in Schleifen und die Grunddatentypen nicht schafft, sollte die Finger vom Programmieren lassen.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Ich glaube, dass das zu viel ist auf einmal.BlackJack hat geschrieben:@Dauerbaustelle: Aber man kann doch einfach die Dokumentation von den verwendeten Funktionen lesen und die einzelnen Teile in einer Python-Shell ausprobieren.
Ich auch nicht, aber ich finde in sinnlos für den OP.Ich finde meinen Code überhaupt nicht sinnlos.
Ich würde behaupten dem OP nicht unbedingt hilfreich, für den Rest aber sicherlich interessant
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Aber zumindest zeigt es ihm auf, dass es in Python viele Wege gibt. Außerdem lesen ja auch andere so einen Thread, wie Du ja richtiger Weise schon angesprochen hast.jbs hat geschrieben:Ich würde behaupten dem OP nicht unbedingt hilfreich, für den Rest aber sicherlich interessant
Ich finde so etwas jedenfalls immer interessant und bin für derartige Snippets dankbar
Finde ich nicht. Ich war auch gaaaaaaanz neu, als BlackJack damals ein Problem meinerseits mit den Itertools effektiver lösen konnte und so viel eleganter, hat zwar ein klein wenig gedauert bis ich es verstanden hatte, war aber gut, dass das gleich "am Anfang" kam, weil sie mir hinterher immer wieder geholfen haben. Hab damals dann auch die Doku durchgelesen und nachgefragt, wenn ich nicht weiter kam. Warum nicht gleich sehen, wie es auch geht und wie es schöner geht ...?Dauerbaustelle hat geschrieben:BlackJack, dein Codebeispiel war sinnlos. Es ist doch sehr einfach zu erkennen, das der OP ein Einsteiger ist.