-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcodes.py
110 lines (61 loc) · 2.98 KB
/
codes.py
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
"""
1. Usando index() função
Uma solução simples é iterar pela lista com índices usando compreensão de lista e verificar outra ocorrência de cada elemento encontrado usando o index() função. A complexidade de tempo dessa solução seria quadrática e o código não lida com elementos repetidos na saída.
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
dup = [x for i, x in enumerate(nums) if i != nums.index(x)]
print(dup) # [1, 5, 1]
Download Executar código
2. Usando o operador In
Alternativamente, você pode usar o fatiamento com o in operador para pesquisar na parte já visitada da lista. A complexidade de tempo da solução permanece quadrática e permite elementos repetidos na saída.
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
dup = [x for i, x in enumerate(nums) if x in nums[:i]]
print(dup) # [1, 5, 1]
Download Executar código
3. Usando o Conjunto (Eficiente)
Para melhorar o desempenho e fazer o trabalho em tempo linear, você pode usar o set estrutura de dados.
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
visited = set()
dup = [x for x in nums if x in visited or (visited.add(x) or False)]
print(dup) # [1, 5, 1]
Download Executar código
Para obter cada duplicata apenas uma vez, você pode usar a compreensão do conjunto, conforme mostrado abaixo:
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
visited = set()
dup = {x for x in nums if x in visited or (visited.add(x) or False)}
print(dup) # {1, 5}
Download Executar código
4. Usando count() função
Aqui está uma solução alternativa usando o count() função, que fornece uma maneira simples e limpa de identificar duplicatas em uma lista. Isso não é recomendado para listas grandes, pois a complexidade de tempo é quadrática.
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
dup = {x for x in nums if nums.count(x) > 1}
print(dup) # {1, 5}
Download Executar código
5. Usando iteration_utilities módulo
finalmente, o iteration_utilities módulo oferece a duplicates função, que produz elementos duplicados. Você pode usar isso como:
from iteration_utilities import duplicates
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
dup = list(duplicates(nums))
print(dup) # [1, 5, 1]
Para obter cada duplicata apenas uma vez, combine-a com unique_everseen():
from iteration_utilities import unique_everseen
if __name__ == '__main__':
nums = [1, 5, 2, 1, 4, 5, 1]
dup = unique_everseen(duplicates(nums))
print(dup) # [1, 5]
Isso é tudo sobre encontrar os itens duplicados em uma lista em Python.
"""
salario = float(input("Digite o salário para calculo do imposto: "))
base = salario
imposto = 0
if base > 3000:
imposto = imposto + ((base - 3000) * 0.35)
base = 3000
if base > 1000:
imposto = imposto + ((base - 1000) * 0.20)
print(f"Salário: R${salario:6.2f} Imposto a pagar: R${imposto:6.2f}")