Esiste un modo migliore per confrontare la lunghezza di tre elenchi per assicurarsi che abbiano tutte le stesse dimensioni oltre a fare confronti tra ogni serie di variabili? Cosa succede se volevo controllare la lunghezza è uguale su dieci liste. Come potrei fare per farlo?Confronta la lunghezza di tre elenchi in python
risposta
Utilizzando all()
:
length = len(list1)
if all(len(lst) == length for lst in [list2, list3, list4, list5, list6]):
# all lists are the same length
o per scoprire se una qualsiasi delle liste hanno una lunghezza diversa:
length = len(list1)
if any(len(lst) != length for lst in [list2, list3, list4, list5, list6]):
# at least one list has a different length
noti che all()
e any()
volontà di corto circuito, così per esempio se list2
ha una lunghezza diversa, non eseguirà il confronto per list3
tramite list6
.
Se le liste sono memorizzate in una lista o una tupla invece di variabili distinte:
length = len(lists[0])
if all(len(lst) == length for lst in lists[1:]):
# all lists are the same length
quindi se volessi trovare una lista che non fosse uguale alla lunghezza per gli altri, dovrei semplicemente cambiare 'len (lst) == length' a 'len (lst)! = length'? – MasterGberry
Si potrebbe usare 'if not all (len (lst) == length ...)' o 'if any (len (lst)! = Length ...)' per scoprire se una lista ha una lunghezza diversa. O hai effettivamente bisogno di sapere quali liste hanno lunghezze diverse? –
No, basta verificare che siano tutti uguali. Non mi piace usare 'if/else' se posso usare' if' – MasterGberry
Assumendo le vostre liste sono memorizzate in un elenco (chiamato my_lists
), usare qualcosa di simile:
print len(set(map(len, my_lists))) <= 1
Questo calcola le lunghezze di tutti gli elenchi presenti in my_lists
e inserisce queste lunghezze in un set. Se sono tutti uguali, il set conterrà un elemento (o zero non hai liste).
perché <1 ... forse intendevi == 1 – wim
Perché se "mie_elenco" è vuoto, cioè stai verificando se le lunghezze delle liste zero sono uguali, allora la risposta è sì. – mbatchkarov
Quindi funziona solo per una lista vuota. –
uno di linea utilizzando itertools.combinations()
import itertools
l1 = [3,4,5]
l2 = [4,5,7]
l3 = [5,6,7,8,3]
L = [l1, l2, l3]
verdict = all([len(a)==len(b) for a,b in list(itertools.combinations(L,2))])
Primo elenco build di lista, L
. Quindi interrogare tutti i set di due elementi di L, con list(itertools.combinations(L,2))
:
>>> list(itertools.combinations(L,2))
[([3, 4, 5], [4, 5, 7]), ([3, 4, 5], [5, 6, 7, 8, 3]),
([4, 5, 7], [5, 6, 7, 8, 3])]
quindi lunghezze di prova per ciascuna coppia in questa lista. Infine, prendi l'intersezione dei booleani, con all()
.
>>> verdict
False
Quale è corretto. Proviamo con le liste di prova della stessa dimensione.
l1 = [3,4,5]
l2 = [4,5,7]
l3 = [5,6,7]
L = [l1, l2, l3]
verdict=all([len(a)==len(b) for a,b in list(itertools.combinations(L,2))])
otteniamo
>>> verdict
True
- 1. Python: XLRD; confronta la lunghezza delle colonne
- 2. Confronta tre valori per l'uguaglianza
- 3. Python: Elementwise unire di due elenchi di stessa lunghezza
- 4. Confronta due elenchi per le differenze
- 5. trovare la lunghezza massima di elenchi in C#
- 6. Python: combinazione in elenchi di elenchi (?)
- 7. Interleaving due elenchi in Python
- 8. Elenchi di lunghezza fissa e letterali tipo
- 9. Confronta due elenchi per aggiornamenti, eliminazioni e aggiunte
- 10. Concatenare tre elenchi in uno con LINQ genera un'eccezione
- 11. Ricerca Python negli elenchi di elenchi
- 12. confronta se un elemento esiste in due elenchi
- 13. Discorso Python Confronta
- 14. Enumerare contemporaneamente due elenchi Python?
- 15. Aggiungere due elenchi di lunghezza diversa in C#
- 16. Inversione di elenchi di numeri in python
- 17. Come interleave elegantemente due elenchi di lunghezza non uniforme in python?
- 18. Porta più elenchi in dataframe
- 19. Copia elenchi 2D in python
- 20. Confronta solo la parte del tempo in datetime - Python
- 21. TRE JS lunghezza cambiamento di vettore per valore assoluto
- 22. Unione di elenchi di valori di dizionario in python
- 23. Scrittura di elenchi Python su colonne in csv
- 24. Python 2, mappa non equivalente alla comprensione degli elenchi in caso semplice; dipendente dalla lunghezza
- 25. Combina dizionari di elenchi in Python
- 26. Confronto di due elenchi in Python
- 27. Concatenazione di elenchi in Python 3
- 28. Confronta `float` e` float64` in python
- 29. Confronta due elenchi generici e rimuovi i duplicati
- 30. Come vengono implementati gli elenchi di argomenti di lunghezza variabile?
Non è necessario confrontare ogni possibile coppia di liste (che è 'O (n!)' Del numero di liste). Hai solo bisogno di confrontare il primo elenco con tutti gli altri elenchi (che è 'O (n)'). –
L'uguaglianza è transitiva, quindi una volta stabilito che due di essi sono uguali, sceglierne uno e confronta ciascuno degli elenchi rimanenti con quello. – chepner
Non ho molta familiarità con Python, quindi non so davvero come usare i generatori o qualcuna di quelle cose fantasiose per fare qualcosa del genere. – MasterGberry