Archiviazione dati

Diciamo che hai sviluppato un gioco per computer chiamato "User Hostile" in cui i giocatori competono contro un'interfaccia computer intricata e ostile. Ora devi scrivere un programma che tenga traccia delle vendite mensili di questo gioco per un periodo di cinque anni. Oppure diciamo che devi fare l'inventario delle carte collezionabili di Hacker Hero.
Molto presto arriverai alla conclusione che hai bisogno di qualcosa di più dei semplici tipi di dati di base per archiviare ed elaborare le informazioni.
 

Elenchi (array)

Per facilitare il lavoro con una grande quantità di dati, a un gruppo di celle viene assegnato un nome comune. Tale gruppo di celle è chiamato array.
 
Array – è un gruppo di celle di memoria dello stesso tipo, poste una accanto all'altra e aventi un nome comune. Ogni cella del gruppo ha un numero univoco.

Quando lavori con gli array, devi imparare a risolvere tre compiti:
X allocare memoria della dimensione richiesta per l'array;
X scrivere i dati nella cella desiderata;
X leggere i dati da una cella.

 

Array in Python

Non ci sono tali array in Python. Invece, le liste sono usate per immagazzinare un gruppo di oggetti dello stesso tipo (ma non solo dello stesso tipo) - oggetti del tipo list. La differenza tra liste e array è che una lista è una struttura dinamica, la cui dimensione può essere modificata durante l'esecuzione del programma (cancellazione, aggiunta di elementi) senza pensare alle operazioni di gestione della memoria (questo viene fatto dal compilatore).
In futuro, quando analizzeremo il lavoro con gli elenchi, useremo la parola "array", poiché molto spesso gli elenchi vengono utilizzati proprio nel ruolo di un array (memorizzano dati dello stesso tipo).
 
Creazione di un array
Quando viene creato un array, viene allocato spazio in memoria (un certo numero di celle). 1) Gli array possono essere creati semplicemente enumerando gli elementi: LA = [1, 4, 7, 12, 5] stampa(tipo(A)) Il programma produrrà
<classe 'elenco'>
Cioè, un array è un oggetto di tipo list (tradotto dall'inglese list).

2) Gli array possono essere composti da dati di qualsiasi tipo: interi o numeri reali, stringhe di caratteri  A = ["Vasya", "Petya", "Fedya"]

Alcuni modi per lavorare con gli array
3) Gli array possono essere "aggiunti". LA = [1, 5] + [25, 7]
4) L'aggiunta di array identici può essere sostituita dalla moltiplicazione. Quindi è facile creare un array riempito con gli stessi valori, in questo modo: A = [0]*10 # crea un array di 10 elementi e lo riempie di zeri
5) Un array "sa" sempre la tua taglia. La funzione  len() viene utilizzata per determinare la dimensione di un array. Spesso la dimensione dell'array è memorizzata in una variabile separata in modo che il programma possa essere facilmente modificato per lavorare con una diversa dimensione dell'array.

Esempio
N = 10 # memorizza la dimensione dell'array nella variabile N A = [0] * N # crea un array di dimensioni N print(len(A)) # stampa la dimensione dell'array La dimensione di un array può essere impostata dalla tastiera.

Lavorare con gli elementi dell'array

Gran parte dell'utilità degli array deriva dal fatto che è possibile accedere individualmente ai suoi elementi.
Il modo per farlo è utilizzare un indice per numerare gli elementi.
 
Indiceè un valore che punta a uno specifico elemento dell'array.

Per fare riferimento a un elemento di un array, devi specificare il nome dell'array seguito dal suo indice tra parentesi quadre. Ad esempio, puoi scrivere il valore 100 nell'elemento dell'array all'indice 1 in questo modo: A[1] = 100.


Devi ricordare!
LA NUMERAZIONE DEGLI ARRAY IN PYTHON PARTE DA ZERO!
(Questo è un prerequisito: devi iniziare da zero. Questo è particolarmente importante da ricordare.)
 
Esempio
x = (A[3] + 5) * A[1] # legge i valori di A[3] e A[1] A[0] = x + 6 # scrive un nuovo valore in A[0]
Analizziamo il programma per lavorare con gli elementi dell'array.
io = 1
A = [0] * 5 # crea un array di 5 elementi
A[0] = 23 # in ognuno dei 5 elementi dell'array (indici da 0 a 4)
A[1] = 12 # scrive un valore specifico
A[2] = 7
A[3] = 43
A[4] = 51
A[2] = A[i] + 2*A[i-1] + A[2*i] # cambia il valore dell'elemento con indice 2 nel risultato dell'espressione
                                # poiché i=1, quindi sostituendo il valore della variabile i nell'espressione che otteniamo
                                # la seguente espressione A[2] = A[1] + 2*A[0] + A[2];
stampa(LA[2] + LA[4])


Come risultato della corsa questo programma apparirà sullo schermo il valore della somma degli elementi dell'array con indice 2 e con indice 4 pari a 116. Come puoi vedere dall'esempio, possiamo accedere a qualsiasi elemento dell'array . E calcola anche il numero dell'elemento richiesto utilizzando varie formule (ad esempio, come nel programma A[i-1] o A[2*i]). In questi casi, gli indici degli elementi verranno calcolati e dipenderanno dal valore di i.

In Python, puoi utilizzare valori di indice negativi per gli array e contare dalla fine dell'array. Per esempio: A[-1] - l'ultimo elemento dell'array A[-2] - penultimo elemento ecc.

Analizziamo il programma. N=5 A = [0] * N  x=1 print(A[x - 3])   # accesso all'elemento A[-2] print(A[x - 3 + len(A)]) # accede all'elemento A[3]                       # questo è lo stesso elemento di  A[-2] A[x + 4] = A[x] + A[2 * (x + 1)]  # dopo aver sostituito x nelle espressioni e nei calcoli                            # ottiene la riga successiva A[5] = A[1] + A[4]                           # A[5] tale elemento non esiste                           # errore - array fuori dai limiti Poiché l'array è dichiarato con 5 elementi, gli elementi saranno numerati da -5 a 4. Vediamo che il programma nella sesta riga fa riferimento a un elemento inesistente: A[5].
Si scopre che il programma è andato oltre i limiti dell'array.
 

In tali casi, il programma di solito si arresta in modo anomalo con errore di runtime.

Iterazione sugli elementi dell'array

Quando lavori con gli array, di solito devi lavorare con tutti gli elementi dell'array contemporaneamente.
 
Itera attraverso gli elementi: scorre tutti gli elementi dell'array e, se necessario, esegue qualche operazione su ciascuno di essi.

Per questo, viene spesso utilizzato un ciclo con una variabile, che cambia da 0 a N-1, dove N è il numero dell'array elementi.
Sotto N considereremo la dimensione attuale dell'array, cioè  N = len(A). ... per i nell'intervallo(N): # qui lavoriamo con A[i] ... Nel ciclo specificato, la variabile i assumerà i valori 0, 1, 2, ..., N-1.  Pertanto, ad ogni passo del ciclo, accediamo a un elemento specifico dell'array con il numero i.
Pertanto, è sufficiente descrivere ciò che deve essere fatto con un elemento dell'array A[i] e posizionare queste azioni all'interno di tale ciclo.

Scriviamo un programma che riempia l'array con i primi N numeri naturali, cioè alla fine del programma gli elementi dell'array dovrebbero diventare uguali A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = N È facile vedere lo schema: il valore di un elemento dell'array deve essere maggiore di 1 dell'indice dell'elemento.

Il ciclo sarà simile a questo per i nell'intervallo(N): A[i] = i + 1

Elenco generatori

Il linguaggio Python consente di risolvere molti problemi in modo conciso e affidabile. Elenchiamo le principali possibilità per riempire un array. 1) La creazione e il popolamento di un array può essere scritto in questo modo: A = [i for i in range(N)] # Con N = 5, array A = [0,1,2,3,4] A = [i*i for i in range(N)] # Con N = 5, array A = [0,1,4,9,16] for i in range(N) - scorre tutti i valori i da 0 a N-1.

L'elemento successivo dell'array conterrà il valore che precede la parola for, nel primo caso i, nel secondo - i*i.

Otteniamo lo stesso risultato utilizzando la seguente notazione:
A = lista(intervallo(N)) # con N = 5, array A = [0,1,2,3,4]

2) Puoi scrivere nell'array non tutti i valori, ma solo quelli che soddisfano una certa condizione.
 
Esempio
Riempiendo l'array con tutti i numeri pari nell'intervallo da 0 a 9. A = [i per i nell'intervallo(10) se io % 2 == 0] print(*A) # array A = [0,2,4,6,8] In questo caso, devi capire che la lunghezza dell'array sarà inferiore a 10. 

3) Riempire un array dalla tastiera con elementi che si trovano uno per riga può essere fatto in due modi.
 
N=5 LA = [0]*5 per i nell'intervallo(N): A[i] = int(input())
A = [int(input()) for i in range(N)]
# ogni volta che il ciclo si ripete,
# la stringa di input viene convertita
# a un numero intero (usando int)
# e questo numero viene aggiunto all'array


4) Riempire un array dalla tastiera con elementi che si trovano tutti sulla stessa riga è un po' più complicato. Devi leggere la stringa, dividerla in elementi e quindi convertire ogni elemento in un numero intero s = input().split()  A = [int(i) for i in s]  o giù di lì A = list(map(int, input().split())) # funzione integrata list()   # trasforma la sequenza   # all'elenco mutabile

Uscita matrice

Puoi anche visualizzare un array sullo schermo in diversi modi.
 
Modo standard, utilizzato in molti linguaggi di programmazione. Un tale ciclo può essere scritto più breve. Il valore di х ad ogni passo del ciclo viene riempito con l'elemento successivo dell'array. In Python, puoi scrivere così.
per i nell'intervallo(len(A)): print(A[i], end=" ") per x in A: print(x, end=" ")
stampa(*A)
# segno * davanti al nome
# dell'array significa che
# deve essere convertito
# array in un insieme di singoli valori