SequenceMatcher bug ?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Wed Dec 10 15:10:38 EST 2008


En Wed, 10 Dec 2008 15:14:20 -0200, eliben <eliben at gmail.com> escribió:

>> > My system is Gentoo, which installs python from source.  Maybe gentoo
>> > applies patches that the binary releases don't have.
>>
>> I can't reproduce the problem. I got exactly the same results  
>> (0.999...)  
>> with all the releases I have at hand, ranging from 3.0 back to 2.1.3,  
>> all  
>> on Windows.
>
>> Andhttp://try-python.mired.org/says the same thing.
>>
>
> What ? This can't be.
>
> 1. Go to http://try-python.mired.org/
> 2. Type
> import difflib
> 3. Type
> difflib.SequenceMatcher(None, [4] + [5] * 200, [5] * 200).ratio()
>
> Don't you get 0 as the answer ?

Ah, but that isn't the same expression you posted originally:

SequenceMatcher(None, [4] + [10] * 500 + [5], [10] * 500 + [5]).ratio()

Using *that* expression I got near 1.0 always. But leaving out the [5] at  
the end, it's true, it gives the wrong answer. Old Python 2.1.3 didn't  
have this problem:

Python 2.1.3 (#35, Apr  8 2002, 17:47:50) [MSC 32 bit (Intel)] on win32
Type "copyright", "credits" or "license" for more information.
>>> import difflib
>>> difflib.SequenceMatcher(None, [4] + [5] * 500, [5] * 500).ratio()
0.99900099900099903
>>> difflib.SequenceMatcher(None, [4] + [5] * 200, [5] * 200).ratio()
0.99750623441396513
>>> difflib.SequenceMatcher(None, [4] + [5] * 100, [5] * 100).ratio()
0.99502487562189057

I've updated the tracker item.

-- 
Gabriel Genellina




More information about the Python-list mailing list