Entonces tengo un código de Python

list1 = ["Anthony", "Sean"] # define a table to use while testing

def IsInArray(val, *tab):   # define function to check
    for v, in tab:
        if v == val:
            return true
    return false

if IsInArray("Anthony", list1) == true:        # testing it
    print("Anthony is in list1")

if IsInArray("Charles", list1) == true:
    print("Charles is in list1")

Pero dice ValueError: too many values to unpack. No entiendo y los otros hilos son demasiado diferentes para entender cómo solucionar esto.

1
Anthony O'Brien 8 may. 2016 a las 18:03

4 respuestas

La mejor respuesta

Solo usa la operadora in:

if "Anthony" in list1:        # testing it
    print("Anthony is in list1")

if "Charles" in list1:
    print("Charles is in list1")
2
Daniel 8 may. 2016 a las 15:28

Tiene 3 errores en la función (coma adicional, True / False, y la expresión condicional). Tal vez esto es lo que quieres decir

def IsInArray(val, *tab):   # define function to check
    for v in tab:
        if val in v:
            return True
    return False
1
gdlmx 8 may. 2016 a las 15:11

Tiene una coma adicional que debe eliminarse:

    for v, in tab:

Después de esto, tenga en cuenta que no hay tal cosa en Python como true o false: son True y False.

Puedo detectar un nuevo problema, incluso con todas las sugerencias:

def IsInArray(val, *tab):   # define function to check
    for v in tab:
        if v == val:
            return True
    return False


IsInArray("Anthony", "Anthony", "Sean")
Out[6]: True

IsInArray("Anthony", ["Anthony", "Sean"])
Out[7]: False

Para tomar una lista como argumento, elimine el asterisco (*) en definición:

def IsInArray(val, tab):
0
enedil 8 may. 2016 a las 15:14

Elimine la coma y elimine el operador * si proporciona una lista como segundo argumento (y True, no true):

# def IsInArray(val, *tab):
def IsInArray(val, tab):   # define function to check
    for v in tab:
        if val in v:
            return True
    return False
2
schwobaseggl 8 may. 2016 a las 15:11