Kann jemand bitte erklären, was vor sich geht?Liste Verständnis gegen Tupel von Sets
>>> xx = ({1,2}, {2,3}, {3,4}, {4,2})
>>> yy = [x.discard(2) for x in xx]
>>> yy
[None, None, None, None]
>>> xx
({1}, {3}, {3, 4}, {4})
>>> id(xx)
4315823704
>>> id(yy)
4315797064
Ich würde yy
, um gleich [{1}, {3}, {3, 4}, {4}]
und xx
zu bleiben unberührt erwartet!
Warum würden Sie das erwarten? 'discard' entfernt das Element von' x', es gibt nichts zurück. – vaultah
@vaultah Wenn ich die Liste Verständnis erweitern out Ich hätte gedacht, es würde sich wie folgt verhalten: 'yy = [] für y in xx: y = y.discard (2) yy.append (y)' – Pynoable
Sie können nicht erwarten, dass ein Listenverständnis Ihnen Ergebnisse zurückgibt, wenn Sie etwas an Ort und Stelle ändern - nur der Rückgabewert wird als Ergebnis protokolliert. Sie müssen eine neue Kopie der Wörterbücher mit den gefilterten Elementen erstellen und diese zurückgeben. Verwende also nicht "discard". –