Guida pratica alla manipolazione di righe e colonne in liste bidimensionali in Python

Python è un linguaggio di programmazione potente e flessibile, che offre molte funzionalità per la manipolazione dei dati. In questo articolo, spiegheremo in dettaglio come manipolare efficacemente liste bidimensionali (liste di liste) usando Python. Partendo dalle operazioni di base, copriremo tecniche pratiche come l’aggiunta e la rimozione di righe e colonne, lo scambio di righe e colonne e l’estrazione di righe o colonne specifiche. Questo ti permetterà di migliorare le tue competenze nella manipolazione dei dati in Python, acquisendo conoscenze utili per l’uso pratico.

Indice

Come aggiungere e rimuovere righe

In questa sezione spiegheremo come aggiungere e rimuovere righe in una lista bidimensionale. Questo ti permetterà di acquisire le competenze necessarie per manipolare in modo flessibile la struttura dei dati.

Aggiungere righe

Per aggiungere una nuova riga a una lista bidimensionale, utilizza il metodo append() della lista. Ad esempio, per aggiungere una nuova riga [10, 11, 12], procedi come segue:

# Aggiungere una nuova riga
new_row = [10, 11, 12]
matrix.append(new_row)
print(matrix)
# Output: [[1, 2, 3], [4, 10, 6], [7, 8, 9], [10, 11, 12]]

Rimuovere righe

Per rimuovere una riga specifica, utilizza la parola chiave del o il metodo pop(). Ad esempio, per rimuovere la seconda riga (indice 1), procedi come segue:

# Rimuovere la seconda riga
del matrix[1]
print(matrix)
# Output: [[1, 2, 3], [7, 8, 9], [10, 11, 12]]

In alternativa, puoi utilizzare il metodo pop() per rimuovere una riga e ottenere la riga rimossa.

# Rimuovere e ottenere la seconda riga
removed_row = matrix.pop(1)
print(matrix)
print(removed_row)
# Output:
# [[1, 2, 3], [7, 8, 9], [10, 11, 12]]
# [4, 10, 6]

Aggiungere e rimuovere più righe

Per aggiungere più righe, usa il metodo extend().

# Aggiungere più righe
new_rows = [[13, 14, 15], [16, 17, 18]]
matrix.extend(new_rows)
print(matrix)
# Output: [[1, 2, 3], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]]

Per rimuovere più righe, usa una lista comprensiva o un ciclo per rimuovere le righe che soddisfano una determinata condizione.

# Rimuovere le righe con indice pari
matrix = [row for i, row in enumerate(matrix) if i % 2 == 0]
print(matrix)
# Output: [[1, 2, 3], [10, 11, 12], [16, 17, 18]]

Questo è come aggiungere e rimuovere righe in una lista bidimensionale con Python. Successivamente, esamineremo come aggiungere e rimuovere colonne.

Come aggiungere e rimuovere colonne

In questa sezione spiegheremo come aggiungere e rimuovere colonne in una lista bidimensionale. Questo ti permetterà di manipolare la struttura dei dati in modo più flessibile.

Aggiungere colonne

Per aggiungere una nuova colonna a una lista bidimensionale, aggiungi un nuovo elemento a ciascuna riga. Ad esempio, per aggiungere un nuovo elemento 10 a ciascuna riga, procedi come segue:

# Aggiungere una nuova colonna a ciascuna riga
for row in matrix:
    row.append(10)
print(matrix)
# Output: [[1, 2, 3, 10], [10, 11, 12, 10], [16, 17, 18, 10]]

Inserire una colonna in una posizione specifica

Per inserire una colonna in una posizione specifica, utilizza il metodo insert() per aggiungere un elemento a ciascuna riga. Ad esempio, per inserire una nuova colonna 5 nella seconda posizione (indice 1), procedi come segue:

# Inserire una nuova colonna nella seconda posizione di ciascuna riga
for row in matrix:
    row.insert(1, 5)
print(matrix)
# Output: [[1, 5, 2, 3, 10], [10, 5, 11, 12, 10], [16, 5, 17, 18, 10]]

Rimuovere colonne

Per rimuovere una colonna specifica, elimina l’elemento corrispondente da ciascuna riga. Ad esempio, per rimuovere la seconda colonna (indice 1), procedi come segue:

# Rimuovere la seconda colonna di ciascuna riga
for row in matrix:
    del row[1]
print(matrix)
# Output: [[1, 2, 3, 10], [10, 11, 12, 10], [16, 17, 18, 10]]

Rimuovere colonne in base a una condizione specifica

È anche possibile rimuovere colonne in base a una condizione specifica combinando un ciclo con un’istruzione condizionale. Ad esempio, per rimuovere l’ultima colonna di ciascuna riga, procedi come segue:

# Rimuovere l'ultima colonna di ciascuna riga
for row in matrix:
    row.pop()
print(matrix)
# Output: [[1, 2, 3], [10, 11, 12], [16, 17, 18]]

Questo è come aggiungere e rimuovere colonne in una lista bidimensionale con Python. Successivamente, vedremo come scambiare righe e colonne.

Scambiare righe e colonne

In questa sezione spiegheremo come scambiare righe e colonne in una lista bidimensionale in Python. Questa operazione, nota anche come trasposizione di una matrice, è molto utile per cambiare la prospettiva dei dati.

Metodo per scambiare righe e colonne

Il metodo più semplice per scambiare righe e colonne in Python è utilizzare una lista comprensiva. Di seguito è illustrato come fare:

# Lista bidimensionale originale
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Scambiare righe e colonne
transposed_matrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print(transposed_matrix)
# Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

In questo metodo, si utilizza una lista comprensiva per creare una nuova lista, costruendo ogni riga della nuova lista come una colonna della lista originale.

Utilizzare NumPy

Un metodo più efficiente consiste nell’usare la libreria NumPy. Con NumPy è possibile scambiare righe e colonne anche su grandi set di dati in modo semplice.

import numpy as np

# Lista bidimensionale originale
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Convertire in array NumPy e trasporre
np_matrix = np.array(matrix)
transposed_matrix = np_matrix.T
print(transposed_matrix)
# Output:
# [[1 4 7]
#  [2 5 8]
#  [3 6 9]]

Metodo manuale per scambiare righe e colonne

Se non si desidera utilizzare liste comprensive o NumPy, è possibile creare manualmente una nuova lista e scambiare righe e colonne.

# Scambiare righe e colonne
transposed_matrix = []
for i in range(len(matrix[0])):
    new_row = []
    for row in matrix:
        new_row.append(row[i])
    transposed_matrix.append(new_row)
print(transposed_matrix)
# Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Questo è come scambiare righe e colonne in una lista bidimensionale con Python. Successivamente, esamineremo come estrarre righe e colonne specifiche.

Estrazione di righe o colonne specifiche

In questa sezione spiegheremo come estrarre righe o colonne specifiche da una lista bidimensionale in Python. Questo ti permetterà di estrarre in modo efficiente solo i dati necessari.

Estrazione di una riga specifica

Per estrarre una riga specifica, specifica l’indice della riga. Ad esempio, per estrarre la seconda riga (indice 1), procedi come segue:

# Lista bidimensionale originale
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Estrarre la seconda riga
second_row = matrix[1]
print(second_row)
# Output: [4, 5, 6]

Estrazione di una colonna specifica

Per estrarre una colonna specifica, estrai l’elemento corrispondente da ciascuna riga. Ad esempio, per estrarre la seconda colonna (indice 1), procedi come segue:

# Estrarre la seconda colonna
second_column = [row[1] for row in matrix]
print(second_column)
# Output: [2, 5, 8]

Estrazione di più righe o colonne

Per estrarre più righe o colonne, utilizza lo slicing. Ad esempio, per estrarre le prime due righe, procedi come segue:

# Estrarre le prime due righe
first_two_rows = matrix[:2]
print(first_two_rows)
# Output: [[1, 2, 3], [4, 5, 6]]

Allo stesso modo, per estrarre un intervallo specifico di colonne, utilizza lo slicing. Ad esempio, per estrarre le prime due colonne, procedi come segue:

# Estrarre le prime due colonne
first_two_columns = [row[:2] for row in matrix]
print(first_two_columns)
# Output: [[1, 2], [4, 5], [7, 8]]

Estrazione basata su condizioni

È possibile estrarre righe o colonne in base a condizioni specifiche. Ad esempio, per estrarre righe che contengono un valore specifico, come il valore 6, procedi come segue:

# Estrarre righe contenenti il valore 6
rows_with_six = [row for row in matrix if 6 in row]
print(rows_with_six)
# Output: [[4, 5, 6]]

Puoi anche estrarre colonne che contengono un valore specifico.

# Estrarre colonne contenenti il valore 8
columns_with_eight = [row[i] for row in matrix for i in range(len(row)) if row[i] == 8]
print(columns_with_eight)
# Output: [8]

Questo è come estrarre righe o colonne specifiche in una lista bidimensionale con Python. Successivamente, vedremo alcuni esempi di applicazione pratica delle liste bidimensionali.

Esempi pratici di liste bidimensionali

Qui presentiamo alcuni esempi pratici che utilizzano liste bidimensionali in Python. Questi esempi ti aiuteranno a comprendere come utilizzare le liste bidimensionali in applicazioni reali.

Esempio pratico 1: Sistema di gestione dei voti

In un sistema di gestione dei voti, è possibile utilizzare una lista bidimensionale per gestire i voti degli studenti per materia.

# Lista dei voti degli studenti
grades = [
    ["Alice", 85, 90, 78],
    ["Bob", 92, 88, 79],
    ["Charlie", 88, 70, 95]
]

# Calcolare la media dei voti di ciascuno studente
for student in grades:
    name = student[0]
    scores = student[1:]
    average = sum(scores) / len(scores)
    print(f"Media dei voti di {name}: {average:.2f}")

# Output:
# Media dei voti di Alice: 84.33
# Media dei voti di Bob: 86.33
# Media dei voti di Charlie: 84.33

Esempio pratico 2: Manipolazione dei pixel di un’immagine

Nel processamento delle immagini, è possibile trattare i dati dei pixel come una lista bidimensionale. Di seguito un esempio per invertire i colori di ciascun pixel di un’immagine.

# Dati dei pixel in 3x3 (ogni elemento è una tupla RGB)
image = [
    [(255, 0, 0), (0, 255, 0), (0, 0, 255)],
    [(255, 255, 0), (0, 255, 255), (255, 0, 255)],
    [(0, 0, 0), (255, 255, 255), (128, 128, 128)]
]

# Invertire i colori
inverted_image = [[(255-r, 255-g, 255-b) for (r, g, b) in row] for row in image]
print(inverted_image)

# Output:
# [[(0, 255, 255), (255, 0, 255), (255, 255, 0)],
#  [(0, 0, 255), (255, 0, 0), (0, 255, 0)],
#  [(255, 255, 255), (0, 0, 0), (127, 127, 127)]]

Esempio pratico 3: Calcolo di matrici

Le liste bidimensionali possono essere utilizzate per calcoli matriciali. Di seguito un esempio di somma di due matrici.

# Due matrici
matrix1 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

matrix2 = [
    [9, 8, 7],
    [6, 5, 4],
    [3, 2, 1]
]

# Somma delle matrici
result_matrix = [[matrix1[i][j] + matrix2[i][j] for j in range(len(matrix1[0]))] for i in range(len(matrix1))]
print(result_matrix)

# Output: [[10, 10, 10], [10, 10, 10], [10, 10, 10]]

Esempio pratico 4: Filtraggio dei dati

Un esempio di utilizzo delle liste bidimensionali per estrarre dati che soddisfano determinati criteri.

# Dati dei dipendenti (nome, età, reparto)
employees = [
    ["Alice", 30, "HR"],
    ["Bob", 25, "Engineering"],
    ["Charlie", 35, "Marketing"]
]

# Estrarre i dipendenti con età maggiore o uguale a 30
senior_employees = [employee for employee in employees if employee[1] >= 30]
print(senior_employees)

# Output: [['Alice', 30, 'HR'], ['Charlie', 35, 'Marketing']]

Questi esempi ti aiuteranno a comprendere i vari utilizzi pratici delle liste bidimensionali. Successivamente, ti proponiamo degli esercizi per approfondire la comprensione.

Esercizi

Qui troverai degli esercizi per approfondire la comprensione delle operazioni con le liste bidimensionali. Prova a implementare ciascun esercizio in Python.

Esercizio 1: Aggiungere e rimuovere righe

Con la lista bidimensionale seguente, aggiungi una nuova riga [10, 11, 12] e poi rimuovi la seconda riga.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Aggiungere una nuova riga
# Rimuovere la seconda riga

print(matrix)
# Output previsto: [[1, 2, 3], [7, 8, 9], [10, 11, 12]]

Esercizio 2: Aggiungere e rimuovere colonne

Con la lista bidimensionale seguente, aggiungi una nuova colonna 10 a ciascuna riga, poi rimuovi la terza colonna.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Aggiungere una nuova colonna a ciascuna riga
# Rimuovere la terza colonna

print(matrix)
# Output previsto: [[1, 2, 10], [4, 5, 10], [7, 8, 10]]

Esercizio 3: Scambiare righe e colonne

Con la lista bidimensionale seguente, scrivi il codice per scambiare righe e colonne.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Scambiare righe e colonne

print(matrix)
# Output previsto: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Esercizio 4: Estrarre righe o colonne specifiche

Con la lista bidimensionale seguente, scrivi il codice per estrarre la seconda riga e la terza colonna.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# Estrarre la seconda riga
# Estrarre la terza colonna

print(second_row)
print(third_column)
# Output previsto:
# [4, 5, 6]
# [3, 6, 9]

Esercizio 5: Filtrare i dati

Con la lista bidimensionale seguente (ogni riga rappresenta un prodotto con nome e prezzo), scrivi il codice per estrarre i prodotti con prezzo pari o superiore a 1000.

products = [
    ["Apple", 1200],
    ["Banana", 800],
    ["Cherry", 1500]
]

# Estrarre i prodotti con prezzo pari o superiore a 1000

print(expensive_products)
# Output previsto: [['Apple', 1200], ['Cherry', 1500]]

Questi esercizi ti aiuteranno ad approfondire la tua comprensione delle operazioni con liste bidimensionali. Infine, riassumiamo i punti trattati in questo articolo.

Conclusione

In questo articolo abbiamo esaminato in dettaglio come manipolare liste bidimensionali in Python. A partire dalla definizione e l’accesso di base alle liste bidimensionali, abbiamo trattato operazioni specifiche come l’aggiunta e la rimozione di righe e colonne, lo scambio di righe e colonne e l’estrazione di righe o colonne specifiche. Abbiamo anche visto esempi pratici per mostrare l’uso delle liste bidimensionali in contesti reali e fornito esercizi per consolidare la comprensione.

Acquisire abilità nella manipolazione efficace delle liste bidimensionali in Python ti permetterà di eseguire in modo più efficiente il trattamento e l’analisi dei dati. Utilizza questo articolo come riferimento e prova a scrivere il codice per comprendere meglio i concetti.

Indice