Tengo una cadena llamada hand = ["KC", "9D", "10S", "jH","11H", "0S", "HC", "Q2S", "100D", "1C", "2D2"]. Solo quiero que ["KC", "9D", "10S", "jH"] devuelva True y que el resto de la cadena devuelva False. ¿Como podría hacerlo?

Actualmente he escrito esto

import re
def checkCard():
     hand = ["KC", "9D", "10S", "jH","11H", "0S", "HC", "Q2S", "100D", "1C", "2D2"]
     stack = map(bool, hand)
     print(list(stack))  
checkCard()
0
Sarana 28 may. 2020 a las 08:01

4 respuestas

La mejor respuesta

Puedes probar

def checkCard():
    hand = ["KC", "9D", "10S", "jH","11H", "0S", "HC", "Q2S", "100D", "1C", "2D2"]
    true_vals = set(["KC", "9D", "10S", "jH"])
    stack  = map(lambda val: val in true_vals, hand)
    print(*hand)
    print(*stack)
checkCard()

Salida

KC 9D 10S jH 11H 0S HC Q2S 100D 1C 2D2
True True True True False False False False False False False

La función de mapa verificará cada valor en la mano si está en un conjunto de true_vals que la conversión a establecer es por problemas de rendimiento ya que buscar en un conjunto es más rápido que en una lista.
Luego imprima la mano y la pila desempacándolas en una declaración de impresión.

2
Leo Arad 28 may. 2020 a las 06:13

Prueba esto, map(func, iterable)

>>> hand = ["KC", "9D", "10S", "jH","11H", "0S", "HC", "Q2S", "100D", "1C", "2D2"]
>>> 
>>> true_vals = ["KC", "9D", "10S", "jH"] 
>>> 
>>> list(map(lambda x : True if x in true_vals else False, hand))

[True, True, True, True, False, False, False, False, False, False, False]
0
Sushanth 28 may. 2020 a las 05:55
# import re
def checkCard():
    hand = ["KC", "9D", "10S", "jH","11H", "0S", "HC", "Q2S", "100D", "1C", "2D2"]
    true_vals = ["KC", "9D", "10S", "jH"]
    bool_op = list(map(lambda val: True if val in true_vals else False, hand))

    print(bool_op)  
checkCard()

Salida:

[True, True, True, True, False, False, False, False, False, False, False]
1
Anshul 28 may. 2020 a las 05:57

Puede hacer esto con la función map así:

def checkCard():
     hand = ["KC", "9D", "10S", "jH","11H", "0S", "HC", "Q2S", "100D", "1C", "2D2"]
     stack = map(lambda x: x in ["KC", "9D", "10S", "jH"], hand)
     print(list(stack))
1
Michael Ruth 28 may. 2020 a las 05:55