Si je définir une fonction:Fonction avec des listes comme arguments/scalaires
def somefunc(a, b, c):
out = [ (a+b)/c for a, b, c in zip(a, b, c) ]
return out
tous les arguments doivent être des listes de la même longueur, sinon je recevrais la sortie tronquée. Exemple: somefunc([1, 2], [3, 4], [5, 5])
me donnerait [0.8, 1.2]
.
Il serait vraiment pratique de pouvoir entrer un seul nombre au lieu d'une liste quand il ne change pas, comme: somefunc([1, 2], [3, 4], 5)
. Bien sûr, l'un des arguments peut être réduit à une seule valeur au lieu d'une liste. Ceci peut être réalisé en utilisant numpy avec cette définition de fonction:
from numpy import array
def somefunc(a, b, c):
a=array(a)
b=array(b)
c=array(c)
out = (a+b)/c
return out
est-il un moyen de faire la même chose sans numpy (et sans convertir tous les arguments un par un)?
Non, 'zip' attend des arguments itérables; Si votre fonction prend des arguments non-iterables, vous devrez les convertir. – jonrsharpe
Note: Si vous voulez des fonctionnalités NumPy, le plus simple sera d'utiliser NumPy. Chaque fonctionnalité peut bien sûr être implémentée sans NumPy, mais si cela était facile, NumPy ne serait pas là. – user2357112