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: pour calculer ce qui précède C_KI [2] [1] code>, 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] code> à zéro pour les indices négatifs ou ne le prenez pas en compte pour la fonction max? P> p>
5 Réponses :
donc, si si, comme je soupçonne, vous voulez tout l'élément Valeur définie sur zéro que vous pouvez utiliser une instruction conditionnelle p> i code> est votre index négatif (éventuellement), vous pouvez simplement faire quelque chose comme ça
Si vous souhaitez mettre l'index elif vous souhaitez mettre l'index -7 code> uniquement s'il existe, et sinon l'index
0 code>, vous pouvez utiliser l'opérateur ternaire :
-7 code> uniquement s'il existe, et sinon la valeur
0 Code>: p>
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!
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. P>
Remarque: que se passe-t-il avec des index négatifs: p>
Exemple: p> résultat: 5 P> p>
Vous pouvez envelopper l'extraction dans une fonction, alors vous pouvez utiliser get_or_zero (c_ki, i, j) code> au lieu de
c_ki [i ] [J] code> dans la fonction max. p> p>
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
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
Vous ne pouvez pas faire
len (3) code> en python. En outre, les supports bouclés ne peuvent pas être utilisés dans ce cas. Vous devez utiliser ces
() code> ou
[] code>.
max () code> 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]}) code>
Mais pourquoi ne pouvez-vous pas simplement ... remplacer le
-7 code> avec
0 code>? Avez-vous besoin de le remplacer sous une certaine condition b>, comme s'il existe?
Il existe une formule qui doit prendre en compte, cela donne parfois les valeurs négatives.