Re: Is there any efficient easy way to compare two lists with the same length with Mathematica?
- To: mathgroup at smc.vnet.net
- Subject: [mg124445] Re: Is there any efficient easy way to compare two lists with the same length with Mathematica?
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Fri, 20 Jan 2012 01:47:54 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Yes, I understand the danger of having greater, etc., threading automatically over lists. But one might make the same argument as to whether == should thread automatically. For example, suppose you are modeling rational numbers as pairs of integers. Then you would want {a,b} == {c, d} to be True exacgly when a d == b c. On 1/19/12 5:10 AM, Andrzej Kozlowski wrote: > I do not think I would like Mathematica to automatically thread Greater > etc over lists or automatically return False or True. Comparisons such > as {3, 4}>= {2, 5} do not have a canonical meaning and they may arise > in programs where the fact that they are kept unevaluated can be > convenient e.g this > Min /@ ({3, 4}>= {2, 5}) is a convenient way to compare minima > (Min@{3,5}>=Min@{2,5} is quite a lot longer...). > In general, there has to be a balance between the sort of things > Mathematica does automatically and the sort of things that Mathematica > leaves unevaluated until you make your intention more clear (by using > Thread, for instance). In this particular case I think the second choice > is the right one. > > Andrzej Kozlowski > > > > On 18 Jan 2012, at 11:57, Murray Eisenberg wrote: > >> Over time more and more things like this have been extended to work >> automatically on lists. But so far, as you discovered, not GreaterEqual >> (nor Greater, etc.). Here's one way without explicitly using Table: >> >> a = RandomInteger[{0, 20}, 5]; >> b = RandomInteger[{0, 20}, 5]; >> And @@ MapThread[Greater, {a, b}] >> >> The key there is MapThread, which does what you (and I) would evidently >> like Mathematica to do automatically -- in effect, to make GreaterEqual >> have Listable as an Attribute. >> >> On 1/17/12 3:34 AM, Rex wrote: >>> Given two lists `A={a1,a2,a3,...an}` and `B={b1,b2,b3,...bn}`, I would >>> say `A>=B` if and only if all `ai>=bi`. >>> >>> There is a built-in logical comparison of two lists, `A==B`, but no >>> `A>B`. >>> Do we need to compare each element like this >>> >>> And@@Table[A[[i]]>=B[[i]],{i,n}] >>> >>> Any better tricks to do this? >>> >> >> -- >> Murray Eisenberg murray at math.umass.edu >> Mathematics& Statistics Dept. >> Lederle Graduate Research Tower phone 413 549-1020 (H) >> University of Massachusetts 413 545-2859 (W) >> 710 North Pleasant Street fax 413 545-1801 >> Amherst, MA 01003-9305 >> > > -- Murray Eisenberg murray at math.umass.edu Mathematics & Statistics Dept. Lederle Graduate Research Tower phone 413 549-1020 (H) University of Massachusetts 413 545-2859 (W) 710 North Pleasant Street fax 413 545-1801 Amherst, MA 01003-9305