In questo articolo vedremo come cercare e come ordinare degli elementi all’interno di una lista. Inoltre scopriremo come sezionare una lista.
Ricerca
Per operare una ricerca all’interno di una lista si utilizza il comando lsearch.
# sintassi
lsearch ?options? list pattern
Vediamo un esempio.
set myList [list "pippo" "pluto" "paperino"]
set myElement "paperino"
set id [lsearch $myList $myElement]
puts "The position of '$myElement' is $id."
---
The position of 'paperino' is 2.
Il comando lsearch dispone di diverse opzioni che lo rendono molto potente, ma in questo articolo non le tratteremo.
Ordinamento
Quando vogliamo ottenere una lista ordinata a partire da una lista qualsiasi, si utilizza il comando lsort.
# sintassi
lsort ?options? list
Vediamo un esempio.
set originalList [list "pippo" "pluto" "paperino"]
set sortedList [lsort $originalList]
puts "Original list is: $originalList"
puts "Sorted list is: $sortedList"
---
Original list is: pippo pluto paperino
Sorted list is: paperino pippo pluto
Se volessimo ordinare la lista originale senza creare una nuova lista, sarà sufficiente utilizzare lo stesso nome di variabile.
set lst [list "pippo" "pluto" "paperino"]
set lst [lsort $lst]
puts "Sorted list is: $lst"
---
Sorted list is: paperino pippo pluto
Nota: per default il comando lsort esegue un ordinamento alfabetico.
Sezionamento
Il sezionamento di una lista, a partire da un determinato punto sino ad arrivare ad un altro, permette di ottenere una nuova lista che conterrà soltanto alcuni elementi della lista originale.
Per fare questo lavoro, si utilizza il comando lrange.
# sintassi
lrange list first last
Se il parametro first è minore o uguale a zero, la sezione partirà dal primo elemento della lista originale.
Se il parametro last sarà pari al valore costante end, o maggiore del numero degli elementi della lista originale, allora la sezione terminerà con l’ultimo elemento della lista originale.
Se il parametro first è maggiore del parametro last, allora il comando lrange restituirà una lista vuota.
set lst [list "Moses" "Napoleon" "Snowball" "Boxer" "Benjamin"]
puts "Case #1: [lrange $lst 1 3]"
puts "Case #2: [lrange $lst -10 3]"
puts "Case #3: [lrange $lst 1 end]"
puts "Case #4: [lrange $lst 3 1]"
---
Case #1: Napoleon Snowball Boxer
Case #2: Moses Napoleon Snowball Boxer
Case #3: Napoleon Snowball Boxer Benjamin
Case #4:
Nel prossimo articolo vedremo come confrontare due stringhe anche con l’uso di caratteri speciali.
