Python | Remova as sublistas repetidas da lista fornecida
Dada uma lista de listas, escreva um programa Python para remover todas as sublistas repetidas (também com ordem diferente) de determinada lista.
Exemplos:
Entrada: [[1], [1, 2], [3, 4, 5], [2, 1]] Saída: [[1], [1, 2], [3, 4, 5]] Entrada: [['a'], ['x', 'y', 'z'], ['m', 'n'], ['a'], ['m', 'n']] Saída : [['a'], ['x', 'y', 'z'], ['m', 'n']]
Abordagem # 1: Definir compreensão + Descompactar
Nossa primeira abordagem é usar o conjunto compreensão de com tupla classificada . Em cada iteração na lista, convertemos a sublista atual em uma tupla classificada e retornamos um conjunto de todas essas tuplas, que por sua vez elimina todas as ocorrências repetidas das sublistas e, portanto, removemos todas as sublistas reorganizadas repetidas.
def
Remove(lst):
return
([
list
(i)
for
i
in
{
*
[
tuple
(
sorted
(i))
for
i
in
lst]}])
lst
=
[[
1
], [
1
,
2
], [
3
,
4
,
5
], [
2
,
1
]]
(Remove(lst))
[[1, 2], [3, 4, 5], [1]]
Abordagem # 2: Usando map() com set tuplas e classificadas .
def
Remove(lst):
return
list
(
map
(
list
, (
set
(
map
(
lambda
x:
tuple
(
sorted
(x)), lst)))))
lst
=
[[
1
], [
1
,
2
], [
3
,
4
,
5
], [
2
,
1
]]
(Remove(lst))
[[1, 2], [3, 4, 5], [1]]
Com a manutenção da ordem -
Abordagem nº 3: usando tupla classificada como hash
Primeiro, inicializamos uma lista vazia como 'res' e um conjunto como 'check'. Agora, para cada sublista na lista, converta a sublista em tupla classificada e salve-a em 'hsh'. Em seguida, verifique se hsh está presente na verificação ou não. Caso contrário, anexe a sublista atual a '.res' e 'hsh' a 'verificar'. Dessa forma, seria mais fácil manter a ordem das sublistas.
def
Remove(lst):
res
=
[]
check
=
set
()
for
x
in
lst:
hsh
=
tuple
(
sorted
(x))
if
hsh
not
in
check:
res.append(x)
check.add(hsh)
return
res
lst
=
[[
1
], [
1
,
2
], [
3
,
4
,
5
], [
2
,
1
]]
(Remove(lst))
[[1], [1, 2], [3, 4, 5]]
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva