Armazenamento de dados

Digamos que você desenvolveu um jogo de computador chamado "User Hostile" no qual os jogadores competem contra uma interface de computador intrincada e hostil. Agora você precisa escrever um programa que rastreie as vendas mensais deste jogo durante um período de cinco anos. Ou digamos que você precise inventariar as Cartas Colecionáveis ​​do Herói Hacker.
Muito em breve você chegará à conclusão de que precisa de mais do que simples tipos básicos de dados para armazenar e processar informações.
 

Listas (arrays)

Para facilitar o trabalho com uma grande quantidade de dados, um grupo de células recebe um nome comum. Esse grupo de células é chamado de array.
 
Array – é um grupo de células de memória do mesmo tipo, localizadas lado a lado e com um nome comum. Cada célula do grupo tem um número único.

Ao trabalhar com arrays, você precisa aprender a resolver três tarefas:
x alocar memória do tamanho necessário para o array;
x gravar dados na célula desejada;
x ler dados de uma célula.

 

Arrays em Python

Não existem tais matrizes em Python. Em vez disso, as listas são usadas para armazenar um grupo de objetos do mesmo tipo (mas não apenas do mesmo tipo) - objetos do tipo lista. A diferença entre listas e arrays é que uma lista é uma estrutura dinâmica, cujo tamanho pode ser alterado durante a execução do programa (excluir, adicionar elementos) sem pensar em operações de gerenciamento de memória (isso é feito pelo compilador).
No futuro, ao analisar o trabalho com listas, usaremos a palavra "array", pois na maioria das vezes as listas são usadas precisamente no papel de um array (elas armazenam dados do mesmo tipo).
 
Criando uma matriz
Quando um array é criado, espaço é alocado na memória (um certo número de células). 1) Arrays podem ser criados simplesmente enumerando elementos: A = [1, 4, 7, 12, 5] print(tipo(A)) O programa produzirá
<class 'lista'>
Ou seja, um array é um objeto do tipo lista (traduzido do inglês lista).

2) Arrays podem ser compostos de dados de qualquer tipo - números inteiros ou reais, cadeias de caracteres  A = ["Vasya", "Petya", "Fedya"]

Algumas formas de trabalhar com arrays
3) Arrays podem ser "adicionados". A = [1, 5] + [25, 7]
4) A adição de matrizes idênticas pode ser substituída por multiplicação. Então é fácil criar um array preenchido com os mesmos valores, assim: A = [0]*10 # criou um array de 10 elementos e o preencheu com zeros
5) Um array sempre "sabe" seu tamanho. A função  len() é usada para determinar o tamanho de um array. Freqüentemente, o tamanho da matriz é armazenado em uma variável separada para que o programa possa ser facilmente alterado para funcionar com um tamanho de matriz diferente.

Exemplo
N = 10 # armazena o tamanho do array na variável N A = [0] * N # cria um array de tamanho N print(len(A)) # imprime o tamanho do array O tamanho de uma matriz pode ser definido no teclado.

Trabalhando com elementos de matriz

Grande parte da utilidade dos arrays vem do fato de que seus elementos podem ser acessados ​​individualmente.
A maneira de fazer isso é usar um índice para numerar os elementos.
 
Índiceé um valor que aponta para um elemento específico da matriz.

Para se referir a um elemento de um array, você deve especificar o nome do array seguido de seu índice entre colchetes. Por exemplo, você pode escrever o valor 100 no elemento da matriz no índice 1 assim: A[1] = 100.


Você tem que se lembrar!
MATRIZ DE NUMERAÇÃO EM PYTHON COMEÇA DO ZERO!
(Este é um pré-requisito - você deve começar do zero. É especialmente importante lembrar disso.)
 
Exemplo
x = (A[3] + 5) * A[1] # leia os valores de A[3] e A[1] A[0] = x + 6 # escreve novo valor para A[0]
Vamos analisar o programa para trabalhar com elementos de array. eu = 1 A = [0] * 5 # cria um array de 5 elementos A[0] = 23 # em cada um dos 5 elementos do array (índices 0 a 4) A[1] = 12 # escreve um valor específico A[2] = 7 A[3] = 43 A[4] = 51 A[2] = A[i] + 2*A[i-1] + A[2*i] # altera o valor do elemento com índice 2 para o resultado da expressão # já que i=1, então substituindo o valor da variável i na expressão obtemos # a seguinte expressão A[2] = A[1] + 2*A[0] + A[2]; imprimir(A[2] + A[4])
Como resultado da execução neste programa aparecerá na tela o valor da soma dos elementos do array com índice 2 e com índice 4 igual a 116. Como você pode ver no exemplo, podemos acessar qualquer elemento da matriz . E também calcule o número do elemento necessário usando várias fórmulas (por exemplo, como no programa A[i-1] ou A[2*i]). Nestes casos, os índices dos elementos serão calculados e dependem do valor de i.

Em Python, você pode usar valores de índice negativos para arrays e contar a partir do final do array. Por exemplo: A[-1] - o último elemento do array A[-2] - penúltimo elemento etc

Vamos analisar o programa. N=5 A = [0] * N  x=1 print(A[x - 3])   # acessando o elemento A[-2] print(A[x - 3 + len(A)]) # acessa o elemento A[3]                       # este é o mesmo elemento que  A[-2] A[x + 4] = A[x] + A[2 * (x + 1)]  # após substituir x em expressões e cálculos                            # obtém a próxima linha A[5] = A[1] + A[4]                           # A[5] tal elemento não existe                           #erro - matriz fora dos limites Como a matriz é declarada com 5 elementos, os elementos serão numerados de -5 a 4. Vemos que o programa na 6ª linha se refere a um elemento inexistente: A[5].
Acontece que o programa ultrapassou os limites do array.
 

Nesses casos, o programa geralmente falha com erro de tempo de execução.

Iterando sobre os elementos da matriz

Ao trabalhar com arrays, você normalmente tem que trabalhar com todos os elementos do array de uma vez.
 
Iterar pelos elementos: percorre todos os elementos do array e, se necessário, executa alguma operação em cada um deles.

Para isso, geralmente é usado um loop com uma variável, que muda de 0 para N-1, onde N é o número do array elementos.
Em N vamos considerar o tamanho atual do array, ou seja,  N = len(A). ... para i no intervalo (N): # aqui trabalhamos com A[i] ... No loop especificado, a variável i assumirá os valores 0, 1, 2, ..., N-1.  Assim, a cada passo do loop, acessamos um elemento específico do array com o número i.
Assim, basta descrever o que precisa ser feito com um elemento do array A[i] e colocar essas ações dentro de tal loop.

Vamos escrever um programa que preencha o array com os primeiros N números naturais, ou seja, ao final do programa os elementos do array devem ficar iguais A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = N É fácil ver o padrão: o valor de um elemento do array deve ser maior em 1 que o índice do elemento.

O loop ficará assim para i no intervalo (N): A[i] = i + 1

Geradores de lista

A linguagem Python permite resolver muitos problemas de forma concisa e confiável. Vamos listar as principais possibilidades de preenchimento de um array. 1) Criar e preencher um array pode ser escrito assim: A = [i para i in range(N)] # Com N = 5, array A = [0,1,2,3,4] A = [i*i para i in range(N)] # Com N = 5, array A = [0,1,4,9,16] for i in range(N) - percorre todos os valores i de 0 a N-1.

O próximo elemento do array conterá o valor que vem antes da palavra for, no primeiro caso i, no segundo - i*i.

Obtemos o mesmo resultado usando a seguinte notação: A = list(range(N)) # com N = 5, array A = [0,1,2,3,4]
2) Você pode escrever no array nem todos os valores, mas apenas aqueles que satisfazem uma determinada condição.
 
Exemplo
Preenchendo a matriz com todos os números pares no intervalo 0 a 9. A = [i para i no intervalo(10) se eu % 2 == 0] print(*A) # array A = [0,2,4,6,8] Nesse caso, você precisa entender que o tamanho do array será menor que 10. 

3) O preenchimento de uma matriz do teclado com elementos que estão localizados um por linha pode ser feito de duas maneiras.
 
N=5 A = [0]*5 para i no intervalo (N): A[i] = int(entrada()) A = [int(input()) para i no intervalo(N)] # cada vez que o loop se repete, # a string de entrada é convertida # para um inteiro (usando int) # e este número é adicionado ao array


4) Preencher uma matriz do teclado com elementos que estão todos localizados na mesma linha é um pouco mais complicado. Você precisa ler a string, dividi-la em elementos e depois converter cada elemento em um inteiro s = input().split()  A = [int(i) para i em s]  ou então A = list(map(int, input().split())) # função interna list()   # transforma a sequência   # para lista mutável

Saída da matriz

Você também pode exibir uma matriz na tela de diferentes maneiras.
 
Forma padrão, usada em muitas linguagens de programação. Esse ciclo pode ser escrito mais curto. O valor de х em cada etapa do loop é preenchido com o próximo elemento da matriz. Em Python, você pode escrever assim.
para i no intervalo(len(A)): print(A[i], end=" ") para x em A: print(x, end=" ") imprimir(*A) # sinal * antes do nome # da matriz significa que # precisa ser convertido # array em um conjunto de valores individuais