Revisão de listas¶
O que é impresso pelo seguinte trecho de código:
Vejamos o código acima pela ótica do codelens:
Activity: CodeLens 2 (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.
Vejamos o que o codelens tem a dizer sobre o trecho de código acima.
Activity: CodeLens 4 (aula11_clone_1)
A fatia a[:]
é uma cópia de a
, uma fatia com todos os elementos de a
.
Lembre-se que o :
é utilizado para definir uma fatia da lista.
Por exemplo, a[1:3]
produz a lista [1,2]
.
Criação de matrizes¶
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.
NumPy - Numerical Python
Dizem que, quando você usa Python, as baterias vem incluídas, pois há vários módulos a sua disposição. Um deles é o [NumPy](http://www.numpy.org/), que facilita operações com matrizes e torna o seu processamento mais eficaz. Mas usar matrizes como listas de listas é um recurso muito útil, inclusive para aprender mais sobre listas.
Qual o problema do seguinte pedaço de código para criação de uma
matriz A
com 5 linhas e 5 colunas com o valor 2 na posição [1][1]
e zero nas demais posições?
Activity: CodeLens 5 (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. Assim, todas as linhas apontam para a mesma lista!
Para criarmos uma matriz é necessário criarmos 5 listas diferentes (uma para cada linha) como por exemplo:
Activity: CodeLens 6 (crie_matriz_1)
Podemos ainda criar uma matriz de zeros utilizando uma função como
Activity: CodeLens 7 (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.
Activity: CodeLens 8 (crie_matriz_errada)