Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #106685

Re: how to convert code that uses cmp to python3

From Ian Kelly <ian.g.kelly@gmail.com>
Newsgroups comp.lang.python
Subject Re: how to convert code that uses cmp to python3
Date 2016-04-08 08:22 -0600
Message-ID <mailman.88.1460125409.2253.python-list@python.org> (permalink)
References (4 earlier) <57075F43.7060004@rece.vub.ac.be> <85fuuw5ypl.fsf@benfinney.id.au> <5707B2CE.1010407@rece.vub.ac.be> <CAPTjJmrMv5O5vwrbfHJJCdiHi87naPOanhPmk4Ba_SLRgu1m4Q@mail.gmail.com> <CALwzid=U5BWiLB2Z+aXS6vd3nPM0rvSUrVgYt4f089L5nEfgNQ@mail.gmail.com>

Show all headers | View raw


On Fri, Apr 8, 2016 at 8:08 AM, Chris Angelico <rosuav@gmail.com> wrote:
> On Fri, Apr 8, 2016 at 11:31 PM, Antoon Pardon
> <antoon.pardon@rece.vub.ac.be> wrote:
>> Doing it as follows:
>>     seq1 < seq2
>>     seq2 < seq1
>>
>> takes about 110 seconds.
>>
>>
>> Doing it like this:
>>     delta = cmp(seq1, seq2)
>>     delta < 0
>>     delta > 0
>>
>> takes about 50 seconds.
>
> Why are you comparing in both directions, though? cmp() is more
> equivalent to this:
>
> seq1 == seq2
> seq1 < seq2
>
> You only need ONE comparison, and the other is presumed to be its
> opposite. When, in the Python 3 version, would you need to compare
> twice?

When there are three possible code paths depending on the result.

def search(key, node):
    if node is None:
        raise KeyError(key)
    if key < node.key:
        return search(key, node.left)
    elif key == node.key:
        return node
    else:
        return search(key, node.right)

How would you implement this with only one comparison?

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: how to convert code that uses cmp to python3 Ian Kelly <ian.g.kelly@gmail.com> - 2016-04-08 08:22 -0600

csiph-web