Paare aus 2 Listen bilden

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

@pixewakb: Den Funktionskopf hat Chilla258 falsch abgeschrieben. Der lautet im Original ``def product(*args, **kwds):``.
Sirius3
User
Beiträge: 18265
Registriert: Sonntag 21. Oktober 2012, 17:20

das »schöne« an Paarebilden ist ja, dass es zwar ein Generator ist, das Ergebnis aber trotzdem
vollständig zuerst erzeugt wird. Generatoren ad absurdum geführt.

@Chilla258: solange Du noch nicht sicher mit Listen umgehen kannst, solltest Du die Finger von
Generatoren, variablen Parametern und ähnlichem lassen. Der Fall für 2 Listen ist für den Anfang
kompliziert genug.
Chilla258
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2012, 22:18

also, wie schon gesagt: ich hab die funktion anhand des links geschrieben. praktisch def product... "übernommen" und den verschiedenen teilen meine namen gegeben. dass das ganze mit einem generator funktioniert, war mir bis dahin noch nicht klar ;) hab ich auch noch nie gemacht....

die sache ist die, dass ich diese funktion so schnell wie möglich zum laufen kriegen MUSS ;)

das andere ist.....meine beiden argumente bestehen aus je einer LISTE.
mein ergebnis soll in einer liste aus tupeln ausgegeben werden wie ich es in meinem ersten beispiel schon angegeben habe.
Sirius3
User
Beiträge: 18265
Registriert: Sonntag 21. Oktober 2012, 17:20

@Chilla258: Du weißt wie man Listen erzeugt?
Du weißt wie man über Listen iteriert?
Du weißt wie man Tuple erzeugt?
Dann mußt Du nur über beide Listen verschachtelt iterieren und jeweils aus den beiden Listelementen ein Tuple erzeugen und in die Ergebnisliste schreiben.
Chilla258
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2012, 22:18

eine liste erstellen kann ich. liste = ["ja","nein","bla",.....]
über eine liste iterieren würde ich so: for abc in liste:

mit tuple bin ich noch nicht so ganz vertraut. ich glaube mein problem ist diese 2 listen verschachtelt als eine aus tupeln bestehende liste auszugeben.
Sirius3
User
Beiträge: 18265
Registriert: Sonntag 21. Oktober 2012, 17:20

Zwei for-Schleifen ineinander geschachtelt schreibt man einfach wie zwei for-Schleifen ineinander:

Code: Alles auswählen

for elem1 in liste1:
    for elem2 in liste2:
        print(elem1,elem2)
Chilla258
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2012, 22:18

angenommen ich mach das dann in etwa so:

Code: Alles auswählen

def PaareBilden(liste1,liste2):
     for elem1 in liste1:
          for elem2 in liste2:
               print (elem1,elem2)
dann gibt es mir alles richtig aus, wenn ich die funktion dann "selbst" ausführe.
um die funktion weiter verwenden zu können, müsste ich das print durch ein return ersetzen...kann das sein?

allerdings brauche ich mein ergebnis als eine liste von tupeln....also muss ich das noch irgendwie definieren.
aber wie sage ich python, dass er mir das ergebnis nicht nur als tuple ausgeben soll, sondern als eine liste dessen?
das bekomme ich einfach nicht hin....ich denke daran liegt im moment mein größtes problem
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

Schau mal den Thread durch. Ich hatte dir dazu schon einen passenden Code gepostet.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Problem liegt momentan wohl daran, dass du kein Tutorial richtig durchgearbeitet hast. Das erstellen von Listen sind absolute Grundlagen. Lasse dein Problem also erstmal liegen und beschäftige dich mit den Basics.
Das Leben ist wie ein Tennisball.
Chilla258
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2012, 22:18

ich habs :)

Code: Alles auswählen

def PaareBilden(liste1,liste2):
	for elem1 in liste1:
		for elem2 in liste2:
			paar = elem1, elem2
			ergebnisListe.append(paar)
	return ergebnisListe

#liste
ergebnisListe = []
	
# Beispiel
print PaareBilden(["a","b"],["c","d"])
na endlich....ich bin ja echt ein schwieriger fall :(

Code: Alles auswählen

[('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
Chilla258
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2012, 22:18

vieleeeeen dank für eure geduld und eure hilfe :) hätte ich alleine niemals geschafft....jetzt gehts an die nächste funktion!
Sirius3
User
Beiträge: 18265
Registriert: Sonntag 21. Oktober 2012, 17:20

Chilla258 hat geschrieben:ich habs :)
bis auf die Tatsache, dass es falsch ist. Wenn Du zwei mal PaareBilden aufrufst, merkst
Du auch warum. ergebnisListe ist bei Dir eine globale Variable!

Hier noch die Python-Variante:

Code: Alles auswählen

def PaareBilden(liste1,liste2):
    return [(elem1, elem2) for elem1 in liste1 for elem2 in liste]
Chilla258
User
Beiträge: 16
Registriert: Sonntag 30. Dezember 2012, 22:18

naja, ich brauch es in meinem programm später nur genau einmal. dafür müsste das so doch reichen, oder nicht?!
es erfüllt doch seinen zweck einmal zu funktionieren
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Chilla258 hat geschrieben: es erfüllt doch seinen zweck einmal zu funktionieren
Du solltest Dir aber von Anfang an angewöhnen, von Anfang an sinnvoll zu programmieren. Sonst gewöhnst Du Dir falsche Muster an, die es Dir später schwerer machen, Dir das wieder abzugewöhnen. Vor allem solltest Du verstehen, *wieso* Deine Lösung suboptimal ist ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

Ich tippe auf eine wissenschaftliche Qualifizierungsschrift - z. B. Diplom oder Examen??? Wahrscheinlich soll das Skript hier für Testreihen oder Datenmaterial in der qualitativen Sozialforschung automatisiert eine Auswertung erledigen.

Das Problem ist einfach: Wenn du in deinem Skript einen Bug hast, weil du den Quellcode nicht verstehst und ihn nicht testen kannst, dann könnten sich Fehler einschleichen, die du erst einmal in deine Arbeit übernimmst. Es wäre schon besser, wenn du den Quellcode verstehen würdest...
Antworten