Home Insegnanti Contattami Portfolio

Liste

1️⃣ Introduzione alle Liste in Python

graph LR
    %% Definizione degli elementi della lista con indice e dato
    A0["Indice: 0 | Dato: A"]
    A1["Indice: 1 | Dato: B"]
    A2["Indice: 2 | Dato: C"]

    %% Collegamenti tra gli elementi della lista
    A0 --> A1
    A1 --> A2

    %% Nodo Lista che punta al primo elemento
    Lista(Lista)
    Lista --> A0

Le liste in Python sono una struttura dati fondamentale, poiché consentono di memorizzare una sequenza ordinata di elementi. Grazie alla loro mutabilità e versatilità, le liste permettono di raccogliere e manipolare dati in molti modi utili. Inoltre, Python offre diverse funzioni e metodi per creare, modificare e lavorare con le liste.

2️⃣ Caratteristiche delle Liste in Python

  1. Ordinamento: Gli elementi sono ordinati in base alla posizione, e possiamo accedervi tramite indice.
  1. Mutabilità: Le liste sono mutabili, quindi possiamo modificarne il contenuto dopo la creazione.
  1. Tipi diversi: Una lista può contenere tipi diversi di dati, inclusi numeri, stringhe, e persino altre liste.

3️⃣ Funzioni principali

Creazione di una lista

  1. Creare una lista vuota: lista = []
  1. Creare una lista con valori: lista = [1, 2, 3]
  1. Creare una lista con valori ripetuti: lista = [0] * 10, che genera una lista di 10 elementi con il valore 0.

Aggiungere elementi

  1. append(x): Aggiunge x alla fine della lista.
  1. insert(i, x): Inserisce x nella posizione i.
  1. extend(iterable): Aggiunge tutti gli elementi di un altro iterabile.
lista = [1, 2, 3]
lista.append(5) # -> [1, 2, 3, 5]

lista = [1, 2, 3]
lista.insert(1, 10) # -> [1, 10, 2, 3]

lista = [1, 2, 3]
lista.extend([4, 5, 6]) # -> [1, 2, 3, 4, 5, 6]

Rimuovere elementi

  1. remove(x): Rimuove la prima occorrenza di x.
  1. pop(i): Rimuove l'elemento nella posizione i.
  1. clear(): Svuota la lista.
lista = [1, 2, 1, 3, 1]
lista.remove(1) # -> [2, 1, 3, 1]

lista = [1, 2, 1, 3, 1]
lista.pop(2) # -> 1, [1, 2, 3, 1]

lista = [1, 2, 1, 3, 1]
lista.clear() # -> []

Ricerca di elementi

  1. index(x[, start[, end]]): Restituisce l'indice della prima occorrenza di x nella lista, cercando opzionalmente tra start e end. Solleva un errore se x non è presente.
  1. count(x): Restituisce il numero di occorrenze di x nella lista.
lista = [1, 2, 3]
lista.index(1) # -> 2
lista.count(3) # -> 1

Ordinamento e inversione

  1. sort(key=None, reverse=False): Ordina gli elementi della lista in ordine crescente. Usa l'opzione reverse=True per ordinare in ordine decrescente. Può accettare una funzione come key per personalizzare l'ordinamento.
  1. sorted(lista): Ritorna una copia ordinata della lista senza modificarla (funzione globale).
  1. reverse(): Inverte l'ordine degli elementi nella lista.
lista = [2, 1, 3]
sorted(lista) # -> [2, 1, 3]

lista = [2, 1, 3]
lista.reverse() # -> [3, 1, 2]

lista = [2, 1, 3]
lista.sort(reverse=False) # -> [1, 2, 3]

Operazioni di aggregazione

  1. Lunghezza: len(lista) restituisce il numero di elementi.
  1. Somma: sum(lista) (per liste numeriche).
  1. Minimo e Massimo: min(lista) e max(lista).
lista = [2, 1, 3]
len(lista) # -> 3
sum(lista) # -> 2 + 1 + 3 = 6
min(lista) # -> 1
max(lista) # -> 3

Copiare una lista

  1. copy(): Restituisce una copia superficiale della lista.
  1. list(lista): Crea una copia della lista originale.
lista = [2, 1, 3]
copy() # -> [2, 1, 3]
list(lista) # -> [2, 1, 3]

Comprensione delle liste

  1. List comprehension: Una sintassi concisa per creare liste filtrate o modificate.
[x**2 for x in range(10)]  # Genera i quadrati dei numeri da 0 a 9

Altre funzioni utili

  1. in: Verifica se un elemento è presente nella lista.
  1. not in: Verifica se un elemento non è presente nella lista.
lista = [2, 1, 3]
3 in lista # -> True
1 not in lista # -> False

Concatena e moltiplica liste

  1. +: Concatena due liste.
  1. *: Ripete la lista un certo numero di volte.
lista1 = [2, 1, 3]
lista2 = [0, 1, 2]
lista1 + lista2 # -> [2, 1, 3, 0, 1, 2]

Accedere agli elementi

  1. lista[i]: Accede all'elemento alla posizione i (con i che può essere negativo per contare dall'ultima posizione).
  1. lista[start:end:step]: Usa lo slicing per ottenere un sottoinsieme della lista specificando inizio, fine e passo.
lista = [2, 1, 3]
lista[0] # -> 2
lista[0] # -> 2

4️⃣ Algoritmi principali

Popolamento lista con random

Inizializza una lista di 10 elementi con valori casuali compresi tra 0 e 9. Infine la stampa a schermo.

import random

lista=[0] * 10
for i in range(0, len(lista)):
	lista[i] = random.randint(0, 9)

print(lista)

Ricerca duplicati in una lista

Trova duplicati di una lista e li aggiunge ad una seconda lista. Infine stampa la lista dei duplicati a schermo.

lista = [1, 2, 4, 0, 1, 2]

duplicati = []
	for i in range(0, len(lista)):
    for j in range(i + 1, len(lista)):
      if lista[i] == lista[j] and lista[i] not in duplicati:
        duplicati.append(lista[i])
 
print(duplicati) # stampa la lista dei duplicati

Ordinamento lista con il bubble sort

lista = [1, 2, 4, 0, 1, 2]

for i in range(len(lista)):
  for j in range(i + 1, len(lista) - 1):
	  if lista[j] > lista[j + 1]:
		  lista[j], lista[j + 1] = lista[j + 1], lista[j]
 
print(lista) # stampa la lista ordinata

Ricerca massimo senza usare max()

lista = [1, 2, 4, 0, 1, 2]

massimo = lista[0]
for i in range(len(lista)):
  if lista[i] > massimo:
	  massimo = lista[i]
 
print(massimo) # stampa il massimo