Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Eserciziario, liste esercizio 3.

A
Alessio_tinaburri (510 points)
4 15 19
in Avvisi by (510 points)
closed by
Sto provando a fare un po' di esercizi dell'eserciziario, e mi sono bloccato su uno in particolare il 3 delle liste. Questo chiede di ordinare 1 matrice di caratteri, ordinando i caratteri in colonna. Ho provato con lambda function, ma non riesco . Qualcuno ha qualche idea?

[['q','s','g','g'],
      ['b','a','m','f'],
      ['a','b','n','z']]
    la funzione restituira' la matrice:
     [['a','a','g','f'],
      ['b','b','m','g'],
      ['q','s','n','z']]
343 views
closed

3 Answers

Best answer
James_F (6070 points)
10 14 47
by (6.1k points)
selected by
devi ricostruire le liste; creati una lista piatta (non lista di liste), salvati la lunghezza delle righe della matrice iniziale, ordina la lista piatta e con una list comprehension rendi la lista ordinata una lista di liste
James_F (6070 points)
10 14 47
by (6.1k points)
edit, no, non esattamente; non devi ordinare una lista piatta, ma il concetto è simile
James_F (6070 points)
10 14 47
by (6.1k points)
EDIT FINALE:

Ho proceduto così:

inverto righe e colonne della lista; ordino le colonne secondo il criterio; reinverto righe e colonne, avendo ora una matrice come quella iniziale ma con le colonne ordinate.
SyncroIT (8690 points)
11 30 98
by (8.7k points)

Io, da ignorante, procederei cosi (questa soluzione funziona solo se le righe hanno tutte la stessa lunghezza):

  • Prendi la lunghezza di una riga qualsiasi (len(rows[0]))
  • Per ogni valore index nel range da 0 a lunghezza della riga:
    • colonna = [row[index] for row in rows]
    • sorted = colonna.sort() quelchesia
    • A questo punto hai la colonna ordinata, quindi ti basta rimettere i valori nei posti giusti.
      for i, row in enumerate(rows): 
          row[i] = colonna[i]
       
Probabilmente è lenta come soluzione, e forse pure sbagliata, ma ci tenevo a darti i miei due cintisimi 
L
Larenzz03 (5990 points)
3 14 65
by (6.0k points)
ti posso chiedere quale sia in particolare? vorrei provarci anch'io

ps. attento hai inserito la domanda in "avvisi"
A
Alessio_tinaburri (510 points)
4 15 19
by (510 points)
Non ci avevo fatto caso. Comunque se vai in eserciario e inserisci l'elenco delle matrici, l'esercizio è il numero 2