J'essaie de créer une fonction Python qui accepte de nombreuses entrées (indéfinies) dans une liste comme celle-ci: mais il n'entraîne qu'un seul résultat au lieu de trois sorties de la liste: < Code> 2.0248456731316713 Code> P> Qu'est-ce que j'ai mal fait avec le code ci-dessus? Merci! P> p>
4 Réponses :
Vous retournez le premier élément, corrigez-le en ajoutant à une liste à la place
def limit(x_es):
result = []
for x in x_es:
result.append(np.sqrt((3-5*x+x**2+x**3))/(x-1))
return result
numbers= [1.1, 1.01,1.001]
limit(numbers)
#[2.0248456731316713, 2.00249843945087, 2.000249984482112]
L'instruction code> de retour code> empêche l'exécution de la fonction à la première itération, renvoyant une valeur unique, la valeur calculée du premier élément de la liste d'entrée.
Ce que vous cherchez est soit un Générateur , qui retournera une nouvelle valeur, chaque fois que vous appelez le fonction, ou un compréhension de la liste , qui retournera un nouveau Liste avec les valeurs calculées. p>
Vous pouvez également utiliser des tableaux numpus directement, car vous semblez l'avoir comme une dépendance (merci @Girish kuniyyal pour l'idée). P>
Vous pouvez utiliser ci-dessous le code, ce qui corrige le problème fort> Notez également le problème initial de votre code, c'est que vous utilisez le retour au mauvais endroit car il renvoie le contrôle à la ligne d'appel À première itération elle-même. p> Vous pouvez également utiliser la compréhension de la liste ici, qui est une façon plus pythonique de le faire, regardez ci-dessous le code p>
J'espère que ce code peut vous aider.
def limit(x_es):
numbers = np.array(x_es)
return np.sqrt(3-(5*numbers)+(numbers**2)+(numbers**3))/(numbers-1)
numbers= [1.1, 1.01,1.001]
limit(numbers)