Python 3.3 Funktion zum Zusammenführen von eindeutigen Werten Formular mehrere Listen zu einer Liste
Ich bin ziemlich neu in Python..ich bin versucht zu schreiben, eine Funktion, verschmelzen die einzigartigen Werte in separaten Listen in einer Liste zusammen. Ich erhalte das Ergebnis ein Tupel von Listen. Letztendlich würde ich gerne eine Liste der eindeutigen Werte von meinen drei Listen,a,b, c. Kann jemand mir eine hand mit dieser?
def merge(*lists):
newlist = lists[:]
for x in lists:
if x not in newlist:
newlist.extend(x)
return newlist
a = [1,2,3,4]
b = [3,4,5,6]
c = [5,6,7,8]
print(merge(a,b,c))
Ich bin immer ein Tupel von Listen
([1, 2, 3, 4], [3, 4, 5, 6], [5, 6, 7, 8])
- Einrücken ist wichtig!
InformationsquelleAutor user2243215 | 2013-04-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Braucht man vielleicht nur sets:
Wenn Sie nicht kümmern, über das Sie in der ursprünglichen Reihenfolge, die einfachste und wahrscheinlich gefastet Möglichkeit ist die Verwendung von set-Funktionen:
Wenn Sie tun über die Pflege der ursprünglichen Reihenfolge (sets passieren zu bewahren, es in diesem Fall aber nicht garantiert), dann kann man Ihre ursprüngliche Versuch, durch die Realisierung, dass das argument
lists
enthält ein Tupel aller ursprünglichen Listen Sie übergeben. Dies bedeutet, dass die Iteration über es bekommt Sie jeder dieser Listen ein zu einer Zeit, anstatt die Elemente, die in Ihnen - Sie können dieses Problem beheben, indem mit dem itertools-Modul:Außerdem würden Sie wollen
newlist
zu Beginn eine leere Liste, anstatt eine Kopie der input-Listen.x not in newlist
wachsen wird für jede iteration.Umgang mit einer Dynamisch Generierten Liste von Listen
Ein üblicher Anwendungsfall ist die Generierung einer Liste von Listen dynamisch, mit jeder child-Liste manchmal auf eine willkürliche Länge:
Wenn Sie arbeiten mit einer Liste von Listen, einfach addieren Sie, wie vorgeschlagen, durch g.d....d....c. funktioniert nicht. Das heißt:
Der Schluckauf kommt von der Tatsache, dass Sie speziell zu verweisen, die Listen
a
,b
, undc
. Die Antwort von Ivc ist wirklich nett und bringt uns näher:Aber wieder, müssen Sie explizit verweisen Sie Ihre Listen.
Die Lösung
Um die eindeutigen Werte aus einer Liste von Listen mit beliebigen Längen, die Sie verwenden können,positions-Erweiterung:
Zurückgeben wird, die entsprechenden Werte ungeordnete (z.B.
["d", "b", "a", "d"]
)