# Product of elements in a set

I have a set of numbers, and I would like to find the product of them. Generally speaking, the set of the numbers could be quite large, and will be complex, so I don't want to have to manually multiply them all. The example I have below only has 3 integer elements though..

v=[1,2,3]
S=Set(v)
S
c=S.cardinality()
c


My original thinking was something along the lines of:

 P = prod(s[i] for i in range(1,c))
P


But I'm not sure how to: 1) define s[i] appropriately or 2) if this will work

I assume at some point I need to define I'm working in a complex field, but again, I'm not sure where I would need to do that?

edit retag close merge delete

Sort by » oldest newest most voted

It is simply

sage: prod(S)
6


You cannot index S because it is not ordered; you would have to convert to a list first e.g. by s = list(S).

The elements of S are of type Integer and so prod will use the product of integers.

When you add to S a complex number element like 1+I which is of type Expression, the Integers will be coerced to Expressions, the product will work in the way you expect and the result will be an Expression.

more

Wow - the one thing I didn't try, and it was the simplest thing! Thank you.

( 2019-02-01 05:33:43 -0500 )edit
1

You can also specify a starting value for the product as an optional argument, so if you want the answer to be in CC, you could do prod(S, CC(1)).

( 2019-02-01 12:30:05 -0500 )edit