0
votes

Liste de modification à l'aide de la boucle

Je veux changer tout le numéro dans cette liste afin d'ajouter 1,5 à tout ce qui est inférieur à 0 jusqu'à ce qu'ils soient supérieurs à 0, je ne comprends pas pourquoi il produirait une sortie très étrange ([1 , 1, 1, 1, -3.5, -2.5, -4, -5, 0.5]) xxx


1 commentaires

Quelle est la valeur initiale de y ?


5 Réponses :


0
votes

python iTerates par valeur, par défaut. Pour itérer par index, vous devez faire une liste d'indices et itérale par que em>. Vous faites cela avec la gamme intégrée () CODE>:

for i in range(len(y)):
    while y[i] < 0:
        y[i] += 1.5
print(y)


2 commentaires

Et si je veux appliquer une fonction assez complexe (comme un i + b i ^ 2) à la Y [i] est inférieur à 0, et que "A" diminue de moitié à chaque fois qu'il est utilisé ? (Je lisais des boucles imbriquées, mais je ne les ai pas appris en classe ...)


Dans ce cas, je déclare A = quelque_value avant le imbriqué tandis que la boucle , puis à l'intérieur de la boucle imbriquée, il suffit de le diminuer à chaque fois. De cette façon, chaque itération du pour la boucle est réinitialisée. Les boucles imbriquées ne devraient pas avoir besoin d'explications - elles fonctionnent exactement comme si vous attendiez.



1
votes

Vous pouvez utiliser MODULO:

for i, n in enumerate(y):
    if n < 0:
        y[i] %= 1.5


1 commentaires

Et si je veux appliquer une fonction assez complexe (comme un i + b i ^ 2) à la Y [i] est inférieur à 0, et que "A" diminue de moitié à chaque fois qu'il est utilisé ? (Je lisais des boucles imbriquées, mais je ne les ai pas appris en classe ...)



2
votes

Vous mélangez les index et éléments de la liste. Et vous aviez besoin d'un certain temps au lieu de "si" pour continuer à aller jusqu'à atteindre le numéro recherché.

Essayez quelque chose comme ceci: P>

for i in range(len(y)):
    while y[i] < 0:
        y[i]+=1.5


2 commentaires

Et si je veux appliquer une fonction assez complexe (comme un i + b i ^ 2) à la Y [i] est inférieur à 0, et que "A" diminue de moitié à chaque fois qu'il est utilisé ? (Je lisais des boucles imbriquées, mais je ne les ai pas appris en classe ...)


Désolé, je ne suis pas sûr de ce dont vous avez besoin, mais de diminuer un nombre de moitié à chaque itération, vous pouvez utiliser: "A / = 2" à l'intérieur d'une boucle. Avec cela, chaque fois que vous bouclez, A est divisé par 2



0
votes

Voici une autre solution en utilisant cette méthode : xxx


0 commentaires

0
votes
for i in range(len(your_list)):
    if your_list[i] < 0:
    your_list[i] += 1.5
print(your_list)

1 commentaires

Et si vous voulez faire ce que vous avez fait avec foreach pour i dans votre_list: si i <0: votre_list [votre_list.index (i)] + = 1.5 Imprimer (votre_list)