0
votes

Définir des indices négatifs dans la liste à zéro

La fonction suivante est placée dans A pour boucle, où des indices de boucle peuvent obtenir des valeurs très négatives comme dans l'exemple suivant: xxx

pour calculer ce qui précède C_KI [2] [1] , Python donne un index de liste d'erreur hors de portée en raison de l'indice négatif. Existe-t-il une manière à définir C_KI [3] [- 7] à zéro pour les indices négatifs ou ne le prenez pas en compte pour la fonction max?


4 commentaires

Vous ne pouvez pas faire len (3) en python. En outre, les supports bouclés ne peuvent pas être utilisés dans ce cas. Vous devez utiliser ces () ou [] .


max () est une fonction, vous devez placer votre ensemble en parenthèses, comme celui-ci: max ({c_ki [1] [1], c_ki [3] [- 7], c_ki [2] [0]})


Mais pourquoi ne pouvez-vous pas simplement ... remplacer le -7 avec 0 ? Avez-vous besoin de le remplacer sous une certaine condition , comme s'il existe?


Il existe une formule qui doit prendre en compte, cela donne parfois les valeurs négatives.


5 Réponses :


0
votes

donc, si i est votre index négatif (éventuellement), vous pouvez simplement faire quelque chose comme ça xxx

si, comme je soupçonne, vous voulez tout l'élément Valeur définie sur zéro que vous pouvez utiliser une instruction conditionnelle xxx


0 commentaires

1
votes

Si vous souhaitez mettre l'index -7 uniquement s'il existe, et sinon l'index index 0 , vous pouvez utiliser l'opérateur ternaire : xxx

elif vous souhaitez mettre l'index -7 uniquement s'il existe, et sinon la valeur 0 : xxx


2 commentaires

Je crois que OP veut mettre toute la valeur de C_KI [3] [- 7] à 0 si l'index n'existe pas


Édité de prendre en compte les deux possibilités!



0
votes

Remarque: vous obtenez une erreur d'index car l'index de liste hors de portée (C_KI [3] [- 7])

Votre C_KI a la dimension [3] [7] avec l'index de comptage de 0 à 2. 3 est Hors de portée.

Remarque: que se passe-t-il avec des index négatifs:

Exemple: xxx

résultat: 5


0 commentaires

3
votes

Vous pouvez envelopper l'extraction dans une fonction, xxx

alors vous pouvez utiliser get_or_zero (c_ki, i, j) au lieu de c_ki [i ] [J] dans la fonction max.


1 commentaires

Avez-vous essayé par exemple: get_or_zero (C_KI, 1, -4)? Si l'index est négatif, son indexation inverse, il ne donnera pas d'erreur si l'index est dans la plage @vlizan



0
votes

9 fois sur dix, il est préférable de résoudre le problème avec les indices, mais en supposant que cela soit la 10e fois, les fonctions maxes intégrées peuvent être combinées pour vous donner le type de protection que vous recherchez:

# legal value, no change required
I= 2
D=(min(max(I,0),4))
# D will equal 2

# large negative set to zero
I= -7
D=(min(max(I,0),4))
# D will zero 0

# large positive set to the value of the maximum of 4
I= 7
D=(min(max(I,0),4))
# D will equal 4


0 commentaires