Matrici di liste 2: esempi¶

Riferimenti: SoftPython - matrice di liste 2

  • visualizza al meglio in
  • versione stampabile: clicca qua
  • per navigare nelle slide: premere Esc


Summer School Data Science 2023 - Modulo 1 informatica: Moodle

Docente: David Leoni david.leoni@unitn.it

Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it

Esempi: diag¶

✪✪ Data una matrice n x n mat come lista di liste, RITORNA una NUOVA lista che contiene gli elementi della diagonale (da sinistra in alto fino all’angolo basso destro)

  • se mat non è n x n solleva l’eccezione ValueError
  • prova ad aggiungere qualche caso di test

Discussione e soluzione

def diag(mat):
    raise Exception('TODO IMPLEMENT ME !')


# TEST
m = [ ['a','b','c'],
      ['d','e','f'],
      ['g','h','i'] ]

assert diag(m) == ['a','e','i']

try:
    diag([              
           ['a','b']
         ])
    raise Exception("Dovrei aver fallito !") 

except ValueError:
    pass

print("Test passati!")

Esempi: is_utriang¶

RITORNA True se la matrice $n$ x $n$ fornita è triangolare superiore, cioè, ha tutte le celle sotto la diagonale a zero. Altrimenti, RITORNA False.

DOMANDA: è sempre necessario percorrere tutta la matrice?

Discussione e soluzione

def is_utriang(mat):
    raise Exception('TODO IMPLEMENT ME !')

assert is_utriang([ [1] ]) == True
assert is_utriang([ [3,2,5],
                    [0,6,2],
                    [0,0,4] ]) == True

assert is_utriang([ [3,2,5],
                    [0,6,2],
                    [1,0,4] ]) == False

assert is_utriang([ [3,2,5],
                    [0,6,2],
                    [1,1,4] ]) == False

assert is_utriang([ [3,2,5],
                    [0,6,2],
                    [0,1,4] ]) == False


assert is_utriang([ [3,2,5],
                    [1,6,2],
                    [1,0,4] ]) == False

Esempi: trasposta in-place 1/2¶

La trasposta $M^T$ di una matrice $M$ è definita come $M^T[i][j] = M[j][i]$

Data una matrice mat come lista di liste $n$ x $n$, la MODIFICA facendo la trasposta in-place

  • Se la matrice non è $n$ x $n$, lancia l’eccezione ValueError

Esempio:

>>> m = [ ['a','b','c'],
          ['d','e','f'],
          ['g','h','i'],
        ]

>>> trasposta(m)
>>> m

[ ['a','d','g'],
  ['b','e','h'],
  ['c','f','i'],
]

Vai alla prossima slide...

Esempi: trasposta in-place 2/2¶

DISCUSSIONE E SOLUZIONE

def trasposta(mat):
    raise Exception('TODO IMPLEMENT ME !')

# TEST
m1 = [ ['a'] ]
trasposta(m1)
assert m1 == [ ['a'] ]

m3 = [ ['a','b','c'],
       ['d','e','f'],
       ['g','h','i'],
     ]
trasposta(m3)
assert m3 == [ ['a','d','g'],
               ['b','e','h'],
               ['c','f','i'],
             ]
try:  # Controlliamo eventuali dimensioni sbagliate della matrice:

    trasposta([ [3,5] ])
    raise Exception("AVREI DOVUTO FALLIRE !")
except ValueError:
    pass

print("Test passati!")

Altri esercizi¶

Nelle slide ho messo gli esempi con la parte di discussione più corposa

Su SoftPython - matrici liste di liste 2 ne trovate parecchi altri esercizi

  • consiglio caldamente di farne il più possibile!
In [2]: