Ho una griglia (6 righe, 5 colonne):Rimuovere riga o colonna dall'elenco 2D se tutti i valori (in quella riga o colonna) sono Nessuno
grid = [
[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None],
]
I aumentare la griglia e potrebbe trasformarsi in qualcosa di simile:
grid = [
[{"some" : "thing"}, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, {"something" : "else"}, None],
[None, {"another" : "thing"}, None, None, None],
[None, None, None, None, None],
]
voglio rimuovere intere righe e colonne che hanno tuttiNone
s in loro. Così nel codice precedente, griglia si trasformerebbe in:
grid = [
[{"some" : "thing"}, None, None],
[None, None, {"something" : "else"}],
[None, {"another" : "thing"}, None],
]
ho rimosso riga 1, 2, 5 (zero indicizzato) e la colonna 2 e 4.
Il modo che sto eliminando le righe ora:
for row in range(6):
if grid[row] == [None, None, None, None, None]:
del grid[row]
non ho un modo dignitoso di eliminare ancora None
colonne. C'è un modo "pitonico" per farlo?
Grazie! Funziona perfettamente. – Matt
Si verifica un errore se valori simili a "" "o' [] 'devono essere distinti da Nessuno. È anche solo leggermente più di 2 volte più lento della mia risposta, 26.8: 12.3 qui (quando si usa la stessa forma di any() in entrambi, apparentemente 'any (n non è None per n in x)' è molto più lento di 'any (x) '). –
Sì, sapevo che questo non sarebbe stato il modo più veloce, ma ritengo che una soluzione più lenta sia accettabile se è più facile da capire e non fa parte del ciclo critico. –