-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPython CursoemVideo.txt
184 lines (131 loc) · 6.08 KB
/
Python CursoemVideo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
• lista1.append(lista2[:])
!=
• lista1.append(lista2)
O primeiro é usado para a cópia de dados, e não usar a lista real
cópia != ligação
toda a lista2 irá ser copiada para a posição 0 da lista 1
É possível criar uma lista da seguinte forma:
• lista3 = [['marco', 18], ['marina', 12]]
e é desta forma que se acessa os seus dados:
• print(lista3[1][0])
Para limpar uma lista inteira, basta usar clear():
• lista.clear()
ou
• lista = []
ps. analisar o exercicio 84
É possível fazer mais de um append ao mesmo tempo e de uma lista dentro da outra desta forma:
• lista.append([[nomes], [numeros], [fala, coe, [oi]]])
ps. tudo deve ser dentro de uma lista pois o .append() aceita apenas um argumento
• a = b = []
Não é recomendável fazer o supracitado pois está relacionando o 'a' e o 'b'
Os dicionários são estruturas de dados semelhantes às tuplas e as listas, só que seus índices podem ser literais/personalizados
são identificados por {}
para declará-los basta:
• dados = dict()
ou
• dados = {}
Na horade referenciar os elementos, usa-se colchetes, na hora de declarar, usa-se chaves
Para colocar os dados dentro da estrutura e dizendo o índice, basta:
• dados = {'Nome': 'Pedro', 'Idade': 25}
'Pedro' é o valor e 'Nome', o identificador do elemento
ou seja, ao invés de dar print(dados[0]), basta apenas print(dados['nome'])]
O append() não funciona no dicionário, funcionando desta forma:
• dados['sexo'] = 'M'
criou-se o elemento 'sexo' e foi inserido 'M' dentro dele
caso o elemento já exista, ele apenas é sobrescrito
É possível usar o comando 'del' para deletar elementos do, e até do próprio dicionário
• del dados['idade']
perdeu-se o elemento e o seu valor
É possível acessar a qualquer momento os itens, chaves ou simplesmente os valores de um dicionário
• filme = {
'título': 'Star Wars',
'ano': 1977,
'diretor': 'George Lucas'
}
• print(filme)
>>> {'título': 'Star Wars', 'ano': 1977, 'diretor': 'George Lucas'}
• print(filme.items()) # Uma composição de elementos
>>> dict_items([('título', 'Star Wars'), ('ano', 1977), ('diretor', 'George Lucas')])
• print(filme.values())
>>> dict_values(['Star Wars', 1977, 'George Lucas'])
• print(filme.keys())
>>> dict_keys(['título', 'ano', 'diretor'])
ps. print(filme[0]) daria erro
caso o .items() seja utilizado em um laço, é similar ao 'enumerate'
• for keys, values in filme.items():
print(f'O {keys} é {values}')
>>> O título é Star Wars
O ano é 1977
O diretor é George Lucas
caso não e em formatação, basta:
• print(f'O {filme['título']} é de {filme['ano']}')
É possível criar uma lista com um dicionário dentro por meio do .append()
no entanto, não é possível fazer fatiamento em um dicionário
Usa-se portanto o .copy()
• locadora.append(filme.copy())
e igualmente, utilizar um print com ambas peculiaridades:
• locadora = [{
'título': 'Star Wars',
'ano': 1977,
'diretor': 'George Lucas'
}, {
'título': 'Avengers',
'ano': 2012,
'diretor': 'Joss Whedon'
}]
• print(locadora[0]['ano'])
>>> 1977
• for filmes in locadora:
for keys, values in filmes.items():
print(keys, values)
criando um loop para a lista e para o dicionário, que está dentro da lista
ps. Another difference is that the list.sort() method is only defined for lists. In contrast, the sorted() function accepts any iterable.
ps. revisar exercicio 91
A função sorted() pode levar como parâmetro o 'key=', o qual escolhe qual posição do objeto será levada em conta no processo de sort
Há também o parâmetro 'reverse=' que recebe valores booleanos e sorteia a lista de trás pra frente
Para que o parâmtro 'key=' seja usado com mais eficiência, é preferível utilizar o 'itemgetter', provido pela biblioteca 'operator'
tal método pode escolher em qual posição da tupla, lista e até dicionário será levaada em conta
• from operator import itemgetter
lista = [(2, 1), (1, 2)]
sorted_lista = sorted(lista, key=itemgetter(1), reverse=True)
print(sorted_lista)
>>> [(1, 2), (2, 1)]
É importante colocar aspas duplas quando for referir-se a um dicionário para não dar erro com as aspas simples
• print(f'Foi um total de {jogador["nome"]} gols')
ps. as asplas simples triplas não dão erros juntos com as aspas simples de um dicionário
Não é possível usar o f'' para formatar listas
NO ENTANTO, é possível transformar as listas em strings por meio do comando str() E ENTÃO, usá-los com eficiência
É possível otimizar suas rotinas no python por meio de funções, sendo elas comandos personalizados
Todas as funções em Python são identificadas por parênteses no final do nome
POR CONVENÇÃO, ORGANIZAÇÃO E ESTÉTICA, entre as funções definidas pelo programador (def) e o programa principal, deve-se ter uma diferença de 2 linhas vazias
É possível passar parâmetros nessas funções, personalizando ainda mais a seu gosto
• def menos(x, y):
s = x - y
print(s)
menos(3, 2)
>>> 1
o x da função irá receber o valor de 3 e o y, o 2
É possível explicitar ainda mais os parâmetros da alocando-os às variáveis preferíveis:
• menos(y=3, x=2)
>>> -1
No Python, é possível o EMPACOTAMENTO DE FUNÇÕES por meio de um asterisco que anteceda a variável:
"Vou receber parâmetros, quantos? Não sei se vira aí"
• def contador(*num):
print(num)
print(len(num))
contador(1, 2, 3)
>>> (1, 2, 3)
3
Tais números da função são automaticamento convertidos em uma tupla
No Python, toda passagem de valores é por referência
• def soma(*num):
s = 0
for n in num:
s += n
print(s)
este programa recebe vários valores e os soma, alocando-os em uma variável e a pritnando depois
Algumas situações é melhor usar o empacotamento, em outras é melhor a lista
Devido a alguns problemas no print utilizando a biblioteca sleep(), torna-se necessário o seguinte uso:
Usar o flush pra forçar que o resultado apareça imediatamente, mesmo sem linha nova
• print('oi', end=' ' flush=True)
melhor explicado: https://pt.stackoverflow.com/questions/291779/o-que-%C3%A9-o-par%C3%A2metro-flush-da-fun%C3%A7%C3%A3o-print