Problem:Set Operationen ohne Datentyp Set() verwendet
Hier ist eine Liste als Eingabe [A,B,C,E]
Ausgang:
[A,B]
[A,C]
[A,E]
[B,C]
[B,E]
[C,E]
Grundsätzlich möchte ich die Vereinigung nehmen der Liste mit sich selbst.
Hier ist der Code:
pageSet_list = ['A', 'B', 'C', 'E']
pageSet_set = list() # To create a list of sets so that we can take their union
for page in pageSet_list:
toBeAdded = set(page)
pageSet_set.append(toBeAdded)
pageSet_list = list()
for i in range(len(pageSet_set)):
for j in range(i,len(pageSet_set)):
z=pageSet_set[i].union(pageSet_set[j])
if (len(z) == 2): # somethin = set([])
print 'z: ',z
pageSet_list.append(z)
Ausgabe dieses Codes:
z: set(['A', 'B'])
z: set(['A', 'C'])
z: set(['A', 'E'])
z: set(['C', 'B'])
z: set(['B', 'E'])
z: set(['C', 'E'])
Fehler:
z: set(['C', 'B'])
Ausgabe sollte waren z: set(['B', 'C'])
.
Jetzt habe ich vor kurzem erfahren, dass das Set eine ungeordnete Datenstruktur ist und daher keine bestimmte Reihenfolge der Elemente aufrechterhält. Durch die Ausführung der Vereinigungsoperation von zwei Sätzen mit der Methode union
wird die Reihenfolge der Elemente geändert.
Meine Frage ist:
Wie führe ich den Satz Operationen, Vereinigung und Schnitt, ohne Datentyp-Set() verwenden?
vielleicht in die [NumPy-Bibliothek] (https://docs.scipy.org/doc/numpy/index.html)? –
ist die Reihenfolge neu erstellbar? Könnten Sie die Daten später einfach sortieren, um die Reihenfolge wiederherzustellen? und wie wird die Ordnung etwa durch Kreuzung aufrechterhalten? Wenn '(1, 2, 3)' und '(3, 2)', was ist das Ergebnis? – acushner
@AndreaCorbellini Ich habe die Frage bearbeitet. Nein, es ist kein Duplikat. – kshikhar