J'ai du mal à comprendre comment fonctionnent les boucles à une seule ligne imbriquée. Voici un exemple:

J'ai ce code:

NewArray = np.array([ get_position(i, size-1, t) for i in range(0, size)])

Et j'essaye de réécrire ceci pour:

for i in range(0,size):
      NewArray = np.array([ get_position(i, size-1, t)])

Mais j'obtiens des sorties différentes, donc je suppose qu'il y a une erreur logique ici.

Pouvez-vous signaler le problème?

Je vous remercie

-2
stepp0 16 janv. 2017 à 06:44

2 réponses

Meilleure réponse

C'est parce que le premier crée un tableau numpy contenant toutes vos valeurs (vous créez toutes les valeurs parce que vous utilisez un list comprehension) et le second crée un nouveau tableau contenant la dernière valeur à chaque itération (et il rejette le tableau créé lors de la dernière itération car vous réutilisez le même nom).

Vous pouvez réécrire le second comme:

lst = []
for i in range(0,size):
    lst.append(get_position(i, size-1, t))
NewArray = np.array(lst)

Cela devrait donner le même résultat que votre première opération.

0
MSeifert 16 janv. 2017 à 03:51

Dans le premier, vous créez un tableau de longueur size. Dans la seconde, vous créez à plusieurs reprises (size fois) un tableau de longueur 1.

0
donkopotamus 16 janv. 2017 à 03:51