| | | |

Minicurso de Python para Matemática

Material disponível para compra: e-book livro. Consulte outras formas de colaboração aqui!

2.8 list

Um list é uma uma coleção de objetos indexada e mutável. Por exemplo,

1x = [-1, 2, -3, -5]
2print(x, type(x))
[-1, 2, -3, -5] <class 'list'>
1y = [1, 1, 'oi', 2.5]
2print(y)
[1, 1, 'oi', 2.5]
1vazia = []
2print(len(vazia))
3print(len(y))
0
4

Os elementos de um list são indexados de forma análoga a um tuple, o índice 0 corresponde ao primeiro elemento, o índice 1 ao segundo elemento e assim por diante. Bem como, o índice 1 corresponde ao último elemento, o 2 ao penúltimo e segue. Por exemplo,

1x[-1] = 3.14
2print('x[0] = ', x[0])
3print(x = ', x)'
x[0] = 1
x = [-1, 2, -3, 3.14]
1x[:3] = [10, -20]
2print(x)
[10, -20, -3, 3.14]

Os operadores básicos de concatenação e de repetição também estão disponíveis para um list. Por exemplo,

1x = [1,2] + [3, 4, 5]
2print(x)
3y = [1,2]*2
4print(y)
[1, 2, 3, 4, 5]
[1, 2, 1, 2]
Observação 2.8.1.

list conta com várias funções prontas para a execução de diversas tarefas práticas como, por exemplo, inserir/deletar itens, contar ocorrências, ordenar itens, etc. Consulte na web Python Docs: More on Lists.

Observação 2.8.2.(Alocação versus cópia)

Estudamos o seguinte exemplo

1x = [2, 3, 1]
2y = x
3y[1] = 0
4print('x =', x)
x = [2, 0, 1]

Em Python, dados têm identificação única. Logo, neste exemplo, x e y apontam para o mesmo endereço de memória. Modificar y é também modificar x e vice-e-versa. Para desassociar y de x, y precisa receber uma cópia de x, como segue

1x = [2, 3, 1]
2print('id(x) =', id(x))
3y = x.copy()
4print('id(y) =', id(y))
5y[1] = 0
6print('x =', x)
7print('y =', y)
id(x) = 140476759980864
id(y) = 140476760231360
x = [2, 3, 1]
y = [2, 0, 1]
Observação 2.8.3.(Anexar ou estender)

Um list tem tamanho dinâmico, permitindo a anexação de um novo item ou sua extensão. A anexação de um item pode ser feita com o método list.append, enquanto que a extensão é feita com list.extend. Por exemplo, com o list.append temos

1l = [1, 2]
2l.append((3,4)))
3print(l)
[1, 2, (3, 4)]

Enquanto, que com o list.extend obtemos

1l = [1, 2]
2l.extend((3,4)))
3print(l)
[1, 2, 3, 4]
E. 2.8.1.

A solução de

x22=0 (2.9)

pode ser aproximada pela iteração do método babilônico

x0=1, (2.10)
xi+1=12(xi+2xi) (2.11)

para i=0,1,2,. Aloque uma lista com as quatro primeiras iteradas, i.e. [x0,x1,x2,x3,x4]. Dica: use list.append.


1x = [1] # x0
2x.append(0.5*(x[-1] + 2./x[-1])) # x1
3x.append(0.5*(x[-1] + 2./x[-1])) # x2
4x.append(0.5*(x[-1] + 2./x[-1])) # x3
5x.append(0.5*(x[-1] + 2./x[-1])) # x4
6print('x = ', x)
E. 2.8.2.

Aloque cada um dos seguintes vetores como um list:

x=(1,3,2), (2.12)
y=(4,2,0). (2.13)

Então, compute

  1. a)

    x+y

  2. b)

    xy

Dica: use uma compreensão de lista e os métodos zip e sum.


1# a)
2x = [-1, 3, -2]
3y = [4, -2, 0]
4xpy = [xy[0]+xy[1] for xy in zip(x,y)]
5print('x + y = ', xpy)
6
7# b)
8dxy = sum([xy[0]*xy[1] for xy in zip(x,y)])
9print('x . y = ', dxy)
E. 2.8.3.

Uma matriz pode ser alocada como um encadeamento de lists. Por exemplo, a matriz

M=[1223] (2.14)

pode ser alocada como a seguinte list

1M = [[1,-2],[2,3]]
2M
[[1, -2], [2, 3]]

Use list para alocar a matriz

A=[121807312] (2.15)

e o vetor

x=(2,3,1), (2.16)

então compute Ax.


1A = [[1,-2,1],
2 [8,0,-7],
3 [3,-1,-2]]
4x = [2,-3,1]
5Ax = [sum([aix[0]*aix[1] for aix in zip(ai, x)]) for ai in A]
6print('Ax = ', Ax)

Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |