Ho un elenco di tuple che è stato creato con la funzione zip
. zip
riunisce quattro elenchi: narrative
, subject
, activity
e filer
, ognuno dei quali è solo un elenco di 0 e 1. Diciamo che quei quattro liste simile a questa:Filtra una tupla con un'altra tupla in Python
narrative = [0, 0, 0, 0]
subject = [1, 1, 0, 1]
activity = [0, 0, 0, 1]
filer = [0, 1, 1, 0]
Ora, io sono zip
ing insieme per ottenere un elenco di valori booleani che indica se qualcuno di loro sono True
.
ny_nexus = [True if sum(x) > 0 else False for x in zip(narrative, subject, activity, filer)]
Il problema che sto avendo ora, sta ottenendo un secondo elenco di tuple per i quali i nomi delle variabili viene restituito se avesse un 1 durante l'iterazione. Immagino che sarebbe simile a questa:
variables = ("narrative", "subject", "activity", "filer")
reason = [", ".join([some code to filter a tuple]) for x in zip(narrative, subject, activity, filer)]
io proprio non riesco a capire come mi piacerebbe andare su questo. La mia uscita desiderata sarebbe simile a questa:
reason
# ["subject", "subject, filer", "filer", "subject, activity"]
Sono un po 'nuovo a Python, quindi mi scuso se la soluzione è semplice.
A proposito, puoi dire 'ny_nexus = [somma (x)> 0 per x in zip ...]' – zondo
Apprezzo sempre il codice più conciso. Grazie – brittenb
Ancora meglio, usa la funzione built-in 'any();)' any ([0, 0, 0]) == False', 'any ([0, 1, 0]) == True'. Quindi, 'ny_nexus = [any (x) per x in zip ...]' – AkiRoss