Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Is there any efficient easy way to compare two lists with the same length with Mathematica?
Replies: 5   Last Post: Jan 21, 2012 5:11 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Andrzej Kozlowski

Posts: 2,112
Registered: 1/29/05
Re: Is there any efficient easy way to compare two lists with the same length with Mathematica?
Posted: Jan 20, 2012 1:49 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Note however that == does not "thread" over lists. Equal is, of
course, not Listable so {1,1}==1 is unevaluated

Thread[{1, 1} == 1]

{True, True}

Equality of lists (including matrices etc) is indeed implemented (but
not through Listability) because the advantage of being able to use the
same function Equal for all these different situations overrides the
flexibility that you loose (like the one you point out). So I agree, but
I simply don't think and equally good case can be made for Greater etc.

Andrzej


On 19 Jan 2012, at 17:24, Murray Eisenberg wrote:

>
>
> 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@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@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






Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.