2016-06-08 26 views
0

I wie unten eine Liste von Tupeln haben:Python - löschen Objekt, das auf ein anderes Objekt verweist

In [136]: z 
Out[136]: 
[(0, array([ 0.71428571, 2.92857143, 1.64285714, 1.07142857])), 
(1, array([ 2.89473684, 1.68421053, 0.52631579, 3.21052632])), 
(2, array([ 1.03571429, 1.5  , 2.75  , 2.96428571])), 
(3, array([ 3.35714286, 2.07142857, 3.  , 1.28571429])), 
(0, array([ 5.234324 , 3.234324 , 4.  , 2.34534534])), 
(4, array([ 0.6, 0.1, 2.6, 0.4]))] 

und eine Liste von Strings wie unten:

In [138]: b 
Out[138]: ['Sam', 'Rachel', 'Mosses', 'Roth', 'Wilhelm'] 

Die ganze Zahl in z Punkte ein Zeichenfolge in b.

Zum Beispiel repräsentieren die Vektoren (0, array([ 0.71428571, 2.92857143, 1.64285714, 1.07142857])) und (0, array([ 5.234324 , 3.234324 , 4. , 2.34534534])) beide 'Sam' (was b[0] ist).

Ich möchte einen Eintrag von b löschen. Als Ergebnis werden alle Vektoren in z, die auf diesen entfernten Eintrag zeigen, gelöscht.

Zum Beispiel, wenn ich 'Sam' löschen werde, möge ich meine neue z werden:

In [136]: z 
Out[136]: 
[(0, array([ 2.89473684, 1.68421053, 0.52631579, 3.21052632])), 
(1, array([ 1.03571429, 1.5  , 2.75  , 2.96428571])), 
(2, array([ 3.35714286, 2.07142857, 3.  , 1.28571429])), 
(3, array([ 0.6, 0.1, 2.6, 0.4]))] 

In [138]: b 
Out[138]: ['rachel', 'mosses', 'roth', 'wilhelm'] 
+1

Wie würden Sie "Sam" von "b" entfernen? Würdest du nach "Sam" in "b" suchen oder hast du den "Index 0" von "b" entfernt? – Divakar

+0

Wollen Sie nur ein Element aus einer Liste entfernen? Nur 'b.pop (0)'? – cdarke

+0

Ich suche nach 'Sam' in 'b', und dann kenne ich den' Index' – oshribr

Antwort

2

Ich versuche nicht, aber wahrscheinlich so etwas wie (wo k der Schlüssel entfernt werden soll, in Ihrem Beispiel k=0):

z = [ (e[0] - (e[0]>k), e[1]) for e in z if e[0] != k ] 

Erläuterungen: können Sie eine Filterwirkung in einer Liste Verständnis haben mit der Syntax for e in z if; Sie können auch 1 zum Initialschlüssel subtrahieren, wenn größer als k, indem Sie den arithmetischen Wert (e[0]>k) verwenden.

Verwandte Themen