Python - Reduce tool Python

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

Reduce tool Python

Publicado por Santiago (2 intervenciones) el 05/06/2019 15:38:25
De un grupo de cartas sumar las que no son figuras y son rojas. Mi problema es solucionado para 2 cartas pero si hay 3 o más por ejemplo 2,8,4 arroja el siguiente error: TypeError: 'int' object is not subscriptable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from functools import reduce
 
#Creo mi lista de cartas
lista_cartas=[("roja",2),("negra","J"),
              ("roja","Q"),("negra",5),
              ("roja",8),("roja",4)]
 
 
expresion_filter=lambda x: x[0]=="roja" and x[1]!="J" and x[1]!="Q" and x[1]!="K"
 
expresion_reduce=lambda x,y: x[1]+ y[1]
 
filtradas=list(filter(expresion_filter,lista_cartas,))
 
print(filtradas)
 
print(reduce(expresion_reduce,filtradas))
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 388
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Reduce tool Python

Publicado por Daniel (111 intervenciones) el 05/06/2019 16:31:25
Hola,

Pues no funciona porque reduces una tupla a un entero. Así en la segunda interacción la primera entrada es un entero y la segunda una tupla. Hay dos maneras de hacerlo, la más coherente es reducir la función a una tupla

1
expresion_reduce=lambda x,y: (x[0], x[1] + y[1])

en este caso el resultado es una tupla y la suma es el segundo de los valores. Otra opción es comprobar el tipo de dato:

1
expresion_reduce=lambda x,y: x[1] + y[1] if type(x) == tuple else x + y[1]

Una explicación en más detalle la puedes ver en esta introducción a la programación funcional en python.

Saludos,
Daniel Rodríguez.
Analytics Lane
Python en Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

Reduce tool Python

Publicado por Santiago (2 intervenciones) el 05/06/2019 16:38:20
Muchas gracias amigo, me sirvió mucho :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar