Ich habe eine Liste von Tupeln, die mit der zip
-Funktion erstellt wird. zip
bringt vier Listen zusammen: narrative
, subject
, activity
und filer
, von denen jede nur eine Liste von 0s und 1s ist. Sagen wir, die vier Listen wie folgt aussehen:Filtern Sie ein Tupel mit einem anderen Tupel in Python
narrative = [0, 0, 0, 0]
subject = [1, 1, 0, 1]
activity = [0, 0, 0, 1]
filer = [0, 1, 1, 0]
Nun, ich bin zip
ing sie zusammen eine Liste der Boolesche Werte zu erhalten, die angibt, ob einer von ihnen True
sind.
ny_nexus = [True if sum(x) > 0 else False for x in zip(narrative, subject, activity, filer)]
Das Problem, das ich jetzt mit bin, eine zweite Liste von Tupeln, für die immer die Namen der Variablen zurückgegeben, wenn es ein 1 während der Iteration hat. Ich stelle mir es so etwas wie folgt aussehen:
variables = ("narrative", "subject", "activity", "filer")
reason = [", ".join([some code to filter a tuple]) for x in zip(narrative, subject, activity, filer)]
Ich kann einfach nicht herausfinden, wie ich über diese gehen würde. Meine gewünschte Ausgabe würde wie folgt aussehen:
reason
# ["subject", "subject, filer", "filer", "subject, activity"]
Ich bin ein wenig neu zu Python, so dass ich entschuldige mich, wenn die Lösung einfach ist.
Übrigens kannst du sagen 'ny_nexus = [Summe (x)> 0 für x in Zip ...]' – zondo
Immer mehr prägnanten Code zu schätzen wissen. Danke – brittenb
Noch besser, benutze die 'any()' eingebaute Funktion;) 'any ([0, 0, 0]) == False',' any ([0, 1, 0]) == True'. Also, 'ny_nexus = [any (x) für x in zip ...]' – AkiRoss