2016-11-19 6 views
3

Supposons que:opération Equavalent de Mathematica en python

h=[1,2,3] 

Il est en opération N[expr] Mathematica qui nous donne:

N[h[0]]=1, N[h[1]]=2, N[h[2]]=3 

et par exemple N[h[6]]=0, est quelque chose comme ça en Python?

+1

cet exemple de code n'est pas syntaxiquement correct mathematica. Qu'est-ce que vous essayez de faire exactement? – agentp

Répondre

0

L'accès à la valeur hors-limite en Python à l'aide de l'opérateur [..] en Python déclenche IndexError.

>>> h = [1, 2, 3] 
>>> h[0] 
1 
>>> h[6] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list index out of range 

En capturant IndexError, vous pouvez avoir un fonctionnement similaire en utilisant une fonction personnalisée:

>>> def N(sequence, index, fallback=0): 
...  try: 
...   return sequence[index] 
...  except IndexError: 
...   return fallback 
... 
>>> h = [1, 2, 3] 
>>> N(h, 0) 
1 
>>> N(h, 1) 
2 
>>> N(h, 2) 
3 
>>> N(h, 6) 
0 
>>> 
>>> N(h, 6, 9) # different fallback value other than 0 
9 
+0

Je pense que le plus simple est: h = [1,2,3] pour n dans la gamme (3.100): h.append (0) Mais, ma question est est-il une opération pour cela? par exemple en ayant une opération N. (Ne pas définir un autre algorithme) – BASU

+0

Vous pouvez également utiliser 'h.extend ([0] * 97)' – falsetru

1

N[expr] Mathematica vous donne la valeur numérique souvent une expression. Cela a du sens dans mathematica, qui maths dos symbolique.

En Python, vous n'avez normalement pas d'expressions symboliques (à moins d'utiliser des bibliothèques spécialisées telles que sympy).

Vous pouvez convertir des objets en entiers à l'aide de int. Par exemple, int(2), int('2') ou int(2.6) donner la valeur 2. Ou vous pouvez convertir en virgule flottante en utilisant float.