Comprimir y descoprimir listas
Publicado por Error en mi programa (12 intervenciones) el 05/11/2017 17:51:42
Hola, necesito que me echen una mano con este ejercicio:
El apartado a) no puedo comprobarlo por que ordenador tiene muy poca potencia y no me va yme gustaría que me dijera alguien si es correcto. El apartado b) tengo algo mal pero no sé el qué, ya que me solo me devuelve el último elemento de la lista que descoprime.
Espero que alguien me eche un cable.
Gracias.
El apartado a) no puedo comprobarlo por que ordenador tiene muy poca potencia y no me va yme gustaría que me dijera alguien si es correcto. El apartado b) tengo algo mal pero no sé el qué, ya que me solo me devuelve el último elemento de la lista que descoprime.
Espero que alguien me eche un cable.
Gracias.
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
# En este ejercicio vamos a "comprimir" y "descomprimir" listas.
# Apartado (a).
# Definir la función compresion(l) que devuelva la lista resultante de
# comprimir la lista l que recibe como entrada, en el siguiente sentido:
# * Si el elemento x aparece n (n > 1) veces de manera consecutiva en l
# sustituimos esas n ocurrencias por la tupla (n, x)
# * Si el elemento x es distinto de sus vecinos, entonces lo dejamos
# igual
# Ejemplo:
# >>> compresión([1, 1, 1, 2, 1, 3, 2, 4, 4, 6, 8, 8, 8])
# [[3, 1], 2, 1, 3, 2, [2, 4], 6, [3, 8]]
# >>> compresión(["a", "a", "a", "b", "a", "c", "b", "d", "d", "f", "h", "h", "h"])
# [[3, 'a'], 'b', 'a', 'c', 'b', [2, 'd'], 'f', [3, 'h']]
def compresión(l):
acum=0
lcomp=[]
for i in range(len(l)):
while l[i]==l[i+1]:
acum+=1
x=[acum,l[i]]
if l[i]!=l[i+1]:
y=l[i]
lcomp.append(x)
lcomp.append(y)
return lcomp
# Apartado (b).
# Definir la función descompresion(l) que devuelva la lista l descomprimida,
# suponiendo que ha sido comprimida con el método del apartado anterior.
# Ejemplo:
# >>> descompresión([[3, 1], 2, 1, 3, 2, [2, 4], 6, [3, 8]])
# [1, 1, 1, 2, 1, 3, 2, 4, 4, 6, 8, 8, 8]
# ----------------------------------------------------------------------------
def descompresión(l):
for x in l:
l_descomp=[]
if type(x)==list:
for i in range(x[0]):
l_descomp.append(x[1])
else:
l_descomp.append(x)
return l_descomp
Valora esta pregunta
0