- Concatenação de listas usando + e *
- Mais fatias de listas
- Matrizes
- Funções com matrizes
O que é impresso pelo seguinte trecho de código:
(aula11_apelido_0)
Vejamos o código acima pela ótica do codelens:
(aluna11_apelido_1)
No código acima b é uma referência ou apelido (= alias) para a mesma lista a que a está se referenciando. O trecho de código a seguir cria um cópia (= clone) de a e b será uma referência a essa cópia.
(aula11_clone_0)
Vejamos o que o codelens tem a dizer sobre o trecho de código acima.
(aula11_clone_1)
A fatia a[:] é uma cópia de a, uma fatia com todos os elementos de a. Podemos usar o : para definir qualquer fatia da lista. Por exemplo, a[1:3] produz a lista [1,2].
Uma outra forma para manipular listas em Python é usando o operador de concatenação +. Veja o seguinte exemplo:
(aula11_concatenacao_01)
Observe que a concatenação pode ser utilizada (junto com fatias) para inserir e/ou remover elementos em qualquer posição da lista. Porém, diferentemente do método append, a concatenação cria uma nova lista contendo o resultado.
Múltiplas concatenações de listas podem ser realizadas pelo operador *. Assim, para se criar uma lista com 5 zeros podemos escrever:
(aula11_concatenacao_02)
Matrizes são estruturas bidimensionais (tabelas) com m linhas por n colunas muito importantes na matemática, utilizadas por exemplo para a resolução de sistemas de equações e transformações lineares.
Em Python, uma matriz pode ser representada como uma lista de listas, onde um elemento da lista contém uma linha da matriz, que por sua vez corresponde a uma lista com os elementos da coluna da matriz.
Qual o problema do seguinte pedaço de código para criação de uma matriz A com 5 linha e 5 colunas com o valor 2 na posição [1][1] e zero nas demais posições?
(crie_matriz_0)
A variável linha_com_zeros contém uma referência à lista [0, 0, 0, 0, 0]. No trecho de código acima, na tentativa de cria uma matriz A, essa mesma referência é copiada 5 vezes.
Para criarmos uma matriz é necessário criarmos 5 linhas diferentes como por exemplo:
(crie_matriz_1)
Podemos ainda criar uma matriz de zeros utilizando uma função como
(crie_matriz_2)
Veja a seguir uma versão errada da função crie_matriz(). Nessa versão cada linha da matriz é um apelido de uma mesma lista.
(crie_matriz_errada)
Escreva a função a leia_matriz() a seguir. Abaixo esta um exemplo com um passo a passo da execução da função.
>>> a = leia_matriz()
Digite o número de linhas: 3
Digite o número de colunas: 4
matriz = []
linha 0 = []
Digite o elemento (0,0): 1
linha 0 = [1]
Digite o elemento (0,1): 2
linha 0 = [1, 2]
Digite o elemento (0,2): 3
linha 0 = [1, 2, 3]
Digite o elemento (0,3): 4
linha 0 = [1, 2, 3, 4]
matriz = [[1, 2, 3, 4]]
linha 1 = []
Digite o elemento (1,0): 5
linha 1 = [5]
Digite o elemento (1,1): 6
linha 1 = [5, 6]
Digite o elemento (1,2): 7
linha 1 = [5, 6, 7]
Digite o elemento (1,3): 8
linha 1 = [5, 6, 7, 8]
matriz = [[1, 2, 3, 4], [5, 6, 7, 8]]
linha 2 = []
Digite o elemento (2,0): 9
linha 2 = [9]
Digite o elemento (2,1): 10
linha 2 = [9, 10]
Digite o elemento (2,2): 11
linha 2 = [9, 10, 11]
Digite o elemento (2,3): 12
linha 2 = [9, 10, 11, 12]
matriz = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
>>> a
(aula11_ex111_tentativa)
Escreva um programa que lê n e uma matriz A de inteiros de dimensão n x n, e verifica se A é simétrica.
0 1 2 3
+-----+-----+-----+-----+
0 | 11 | -3 | 4 | 8 |
+-----+-----+-----+-----+
1 | -3 | 12 | 6 | 11 |
+-----+-----+-----+-----+
2 | 4 | 6 | 5 | 13 |
+-----+-----+-----+-----+
3 | 8 | 11 | 13 | 5 |
+-----+-----+-----+-----+
Sugestões: utilize as funções leia_matriz(), imprima_matriz() e simetrica() dos exercícios anteriores.
(aula11_ex114_tentativa)
Escreva um programa que leia inteiros positivos m e n e os elementos de uma matriz A de números inteiros de dimensão m x n e conta o número de linhas e colunas que tem apenas zeros.
Matriz: 4 x 5
0 0 0 0 1
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
Linhas nulas = 2
Colunas nulas = 3
(aula11_ex115_tentativa)
Escreva um programa que leia duas matrizes, a matriz A de dimensão m x n e B de dimensão n x p e imprime a matriz C de dimensão m x p que é o produto de A por B.
Sugestões: utilize as funções leia_matriz(), imprima_matriz() e multiplica_matriz() dos exercícios anteriores.
(aula10_ex117_tentativa)
A leitura e vídeos sugeridos aqui, em geral, contém (muito?) mais tópicos do que os que vistos durante a aula. Os tópicos não vistos na aula serão cobertos em algum momento mais oportuno.
Leitura das seções:
do capítulo Listas do livro interativo Como pensar como um Cientísta da Computação.