logo

Pitone | Ordinamento di elenchi con elementi di elenco simili

L'ordinamento è sempre stata un'operazione chiave eseguita per molte applicazioni e anche come sottoproblema di molti problemi. Sono state discusse molte varianti e tecniche e la loro conoscenza può essere utile durante la programmazione. In questo articolo viene illustrato l'ordinamento degli elenchi contenenti un elenco. Discutiamo alcuni modi in cui ciò può essere eseguito.

Metodo n. 1: utilizzo di sorted() + comprensione dell'elenco



In questo metodo, usiamo semplicemente la scorciatoia del lungo processo che può essere applicato. L'elenco viene ripetuto e il sottoelenco successivo viene ordinato utilizzando la funzione sorted che ordina anche l'elenco interno.

comando nel nodo js

Approccio passo dopo passo:

  1. Iniziamo inizializzando una lista nidificata lista_test contenente due sottoliste, ciascuna contenente un numero diverso di liste, ciascuna delle quali contiene due numeri interi.
  2. Stampiamo quindi l'elenco originale utilizzando la funzione print() e la funzione str() per convertire l'elenco in una stringa per scopi di stampa.
  3. Usiamo una comprensione di lista con la funzione sorted() per ordinare ciascuna sottolista all'interno di test_list in base agli elementi all'interno di ciascuna sottolista.
  4. Assegniamo l'elenco ordinato di liste risultante alla variabile res.
  5. Infine, stampiamo l'elenco ordinato risultante utilizzando la funzione print() e la funzione str() per convertire l'elenco in una stringa per scopi di stampa.

Python3








# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using list comprehension + sorted()> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # using list comprehension + sorted()> # Sorting list of lists with similar list elements> res>=> [>sorted>(idx)>for> idx>in> test_list]> # print result> print>(>'The list after performing sort operation : '> +> str>(res))>

>

>

Produzione :

L'elenco originale: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] L'elenco dopo aver eseguito l'operazione di ordinamento: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complessità temporale: O(nlogn)
Spazio ausiliario: O(1)

Metodo n. 2: utilizzo di map() + sorted()

Anche la combinazione delle funzioni di cui sopra svolge un compito simile al metodo di cui sopra, con la sola differenza che la funzione map viene utilizzata per estendere la logica di ordinamento all'insieme delle sottoliste.

Python3


java switch int



# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using map() + sorted()> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # using map() + sorted()> # Sorting list of lists with similar list elements> res>=> list>(>map>(>sorted>, test_list))> # print result> print>(>'The list after performing sort operation : '> +> str>(res))>

>

>

Produzione :

L'elenco originale: [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] L'elenco dopo aver eseguito l'operazione di ordinamento: [[[1 , 1], [4, 4]], [[2, 2], [3, 3], [5, 5]]]

Complessità temporale: O(n*nlogn), dove n è il numero di elementi nell'elenco test_list.
Spazio ausiliario: O(n), dove n è il numero di elementi nella lista lista_test.

Metodo 3: utilizzo della funzione lambda con il metodo sort().

Approccio:

  1. Inizializza l'elenco test_list con dati di esempio.
  2. Stampa l'elenco originale utilizzando la funzione print().
  3. Utilizzare il metodo sort() per ordinare l'elenco di elenchi. Il parametro key è impostato su una funzione lambda che ordina ciascun elemento dell'elenco.
  4. Stampa l'elenco ordinato utilizzando la funzione print().

Di seguito è riportata l’implementazione dell’approccio di cui sopra:

Python3




# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using lambda function and sort()> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # using lambda function and sort()> # Sorting list of lists with similar list elements> test_list.sort(key>=>lambda> x:>sorted>(x))> # print result> print>(>'The list after performing sort operation : '> +> str>(test_list))>

>

>

Produzione

The original list : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] The list after performing sort operation : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]]>

Complessità temporale: O(n log n), dove n è il numero di elementi nell'elenco.
Spazio ausiliario: O(1), poiché non utilizza spazio aggiuntivo oltre all'elenco di input.

Metodo n. 4: utilizzo di functools.cmp_to_key()

  1. Importa il modulo funtools.
  2. Definire una funzione di confronto che accetta due sottoliste come argomenti e restituisce -1, 0 o 1 a seconda del loro ordine relativo.
  3. Utilizza la funzione sorted() e la funzione cmp_to_key() di functools per ordinare l'elenco originale utilizzando la funzione di confronto.

Python3




selezione html

# Python3 code to demonstrate> # Sorting list of lists with similar list elements> # using functools.cmp_to_key()> # import functools module> import> functools> # initializing list> test_list>=> [[[>4>,>4>], [>1>,>1>]], [[>3>,>3>], [>2>,>2>], [>5>,>5>]]]> # printing original list> print>(>'The original list : '> +> str>(test_list))> # define comparison function> def> compare_lists(list1, list2):> >if> sorted>(list1) <>sorted>(list2):> >return> ->1> >elif> sorted>(list1)>>sorted>(list2):> >return> 1> >else>:> >return> 0> # using functools.cmp_to_key() and sorted()> # Sorting list of lists with similar list elements> test_list.sort(key>=>functools.cmp_to_key(compare_lists))> # print result> print>(>'The list after performing sort operation : '> +> str>(test_list))>

>

>

Produzione

The original list : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]] The list after performing sort operation : [[[4, 4], [1, 1]], [[3, 3], [2, 2], [5, 5]]]>

Complessità temporale: O(N * M * log(M)), dove N è il numero di sottoliste e M è la lunghezza della sottolista più lunga.
Spazio ausiliario: O(M) , dove M è la lunghezza della sottolista più lunga, per l'operazione di ordinamento.