2015-12-22 3 views
1

J'ai un FiniteSet et un symbole avec lequel je veux associer une Relation telle que le symbole est dans le FiniteSet, est-ce possible avec sympy? symbol in FiniteSet ne renvoie pas une expression, mais il évalue la place:Sympy relationnel symbole dans l'ensemble

>>> from sympy import * 
>>> s = FiniteSet(range(0,3)) 
>>> x = symbols('x') 
>>> x in s 
False 
>>> Eq(x,s) 
x == {0, 1, 2} 
>>> In(x,s) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'In' is not defined 

Edit: Merci à Ohé pour me parler de Contains. J'ai mis à jour ma version de sympy, par la façon dont la syntaxe de FinitSet a également changé dans la mise à jour. Je donne le petit exemple que je comptais travailler en premier lieu pour l'enregistrement:

>>> from sympy import * 
>>> x = symbols('x') 
>>> s = FiniteSet(*range(0,3)) 
>>> init_printing() 
>>> Contains(x,s) 
x ∈ {0, 1, 2} 

Répondre

2

Ce que vous cherchez peut-être la fonction Contains.

+0

Pouvez-vous fournir un lien vers la documentation? Ce n'est pas vraiment facile de trouver la fonction 'contains' :) – Emilien

+1

@Emilien ce que vous voulez est en effet' Contient ', mais vous avez besoin au moins de SymPy 0.7.6 pour cela. – asmeurer

0

Votre code ne fonctionne pas pour moi. L'expression

x in s 

déclenche une exception. Vous devez d'abord attribuer une valeur à x. Ensuite, vous pouvez simplement utiliser "in".

Comme ceci:

s = FiniteSet(range(0,3)) 
x = symbols('x') 
x=3 
x in s # False 

Voici la configuration complète:

>>> from sympy import * 
>>> s=FiniteSet(range(0,3)) 
>>> x=symbols("x") 
>>> x in s 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\lhk\Anaconda3\lib\site-packages\sympy\sets\sets.py", line 497, in __contains__ 
    raise TypeError('contains did not evaluate to a bool: %r' % symb) 
TypeError: contains did not evaluate to a bool: Contains(x, {range(0, 3)}) 
>>> x=3 
>>> x in s 
False 
>>> Contains(x,s) 
False 
>>> 
+0

C'est bizarre, mais je ne l'utilise que pour illustrer ce que je ne veux pas. Pour l'enregistrement, j'utilise la version 0.7.5 de Sympy. – Emilien

+0

Désolé, je viens de comprendre que le résultat de 'x in s' n'était pas dans ma question, il répond False avec ma version de sympy (mais ce n'est toujours pas ce que je cherche) – Emilien