I am starting to wonder why python is so loose on this. I say "python" 
because the issue appears for enumerate as well. How can I enumerate a set? 
Still I am allowed to enumerate a set without receiving any warning. Look 
at this for instance

set(["a","b"])==set(["b","a"])
list(enumerate(set(["a","b"])))
list(enumerate(set(["b","a"])))
import sympy as sp
_a, _b = sp.symbols('a b')
set([_a,_b])==set([_b,_a])
list(enumerate(set([_a,_b])))
list(enumerate(set([_b,_a])))


Funny enough, moving this code from one notebook to another may change the 
order in which the sets are ordered. In all cases they are ordered in the 
same way within the same notebook, but you and I running the same code may 
get different outcomes!
I do not know if this is special with sets of sympy symbols, but I would 
have said that deep down enumerate should throw a warning when you try to 
enumerate a set.



On Thursday, July 9, 2020 at 9:55:15 PM UTC+2, Aaron Meurer wrote:
>
> Can you open an issue in the issue tracker for this? I agree that sets 
> should not be allowed. 
>
> Aaron Meurer 
>
> On Thu, Jul 9, 2020 at 3:08 AM Roberto <francesch...@gmail.com 
> <javascript:>> wrote: 
> > 
> > I have seen that lambdify wants a list for the arguments to be treated 
> as symbols. This list can be also give as a python set, e.g. {x,y,z }, 
> which is exactly what would be returned by a .free_symbol property. If 
> lambdify is feed a set like that of the output of .free_symbol it may 
> change their order in the conversion from set to list. This is done 
> silently and may cause major disfunction in the use of the lamdified 
> function because you think x is x, but is y instead and so on. 
> > I would like to ask developers to check for the type of the lambdify 
> list of arguments and throw a warning to flag that a set is being converted 
> and that the ordering is not guaranteed. 
> > Given that .free_symbols returns a set, not a list, this is very common 
> pitfall in my opinion and must be prevented. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "sympy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to sy...@googlegroups.com <javascript:>. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/c1517b79-490b-4a1b-b526-3e3842b55fbco%40googlegroups.com.
>  
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/950c3496-e12d-4dfe-87b1-020dd706bb11o%40googlegroups.com.

Reply via email to