es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Operador AND entre múltiples valores en una función

Tengo una función que toma dos valores de lista y devuelve la salida del operador AND de ellos. Ahora necesito hacer que la función tome múltiples valores y obtener la salida. Por ahora, lo he hecho para dos listas de valores de bandera:

def and_op(lst1, lst2):
    return np.array([(lst1 & lst2) for lst1,lst2 in zip(lst1, lst2)])

and_op([0,0,1,1,0], [1,0,1,1,1])

SALIDA:

array([0,0,1,1,0])

Ahora necesito cambiar esta función para que los argumentos se den de forma dinámica y el número de argumentos pueda ser mayor a dos.

and_op([0,1,1,0], [1,1,0,1], [1,1,1,0], [0,1,0,1])

¿Cómo puedo cambiar la función para obtener la salida para el caso anterior? Pensé en utilizar *args, pero me confundí mucho sobre cómo usar el operador & en él.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para modificar la función and_op para que acepte múltiples listas, podemos utilizar la sintaxis *args para aceptar cualquier número de argumentos. Aquí tienes un fragmento de código actualizado:

    def and_op(*args):
        result = args[0]
        for lst in args[1:]:
            result &= lst
        return result
    

    En la función actualizada, asumimos primero que el primer argumento es una lista y lo asignamos a result. Luego, para todos los argumentos posteriores en *args, realizamos la operación & entre result y la lista actual, almacenando el resultado nuevamente en result. Finalmente, devolvemos result.

    Por ejemplo, si llamamos a and_op([0,1,1,0], [1,1,0,1], [1,1,1,0], [0,1,0,1]), el resultado sería [0,1,0,0], que es la operación AND elemento por elemento de las cuatro listas.

    Ten en cuenta que en la función actualizada, no necesitamos utilizar np.array, ya que la operación & se puede realizar directamente en listas en Python.

Comments are closed.