Dik. Jiny pohled, protoze to je zajimave. :-) >>> {0, False, 0.0, 0j} set([0j]) >>> {0, 0j, 0.0, False} set([False]) >>> {True, 1, -1j*1j, 1.0} set([1.0])
Hint: >>> map(hash, (True, 1, -1j*1j, 1.0)) [1, 1, 1, 1] BTW, PyPy vezme naopak prvni prvek z literalu. Pritom jeste jedna zajimava vec: >>> a = 'ahoj' >>> b = -1425894204 >>> hash(a), hash(b), hash(a) == hash(b) (-1425894204, -1425894204, True) >>> {a, b} set(['ahoj', -1425894204]) A taky: >>> {1j*1j, -1} set([-1]) >>> {-1, 1j*1j} set([(-1+0j)]) >>> map(hash, (1j*1j, -1)) [-2, -2] Nabizim vysvetleni: Hesovani slouzi pouze k rychlemu prvotnimu vyberu pomyslneho kbeliku, kde se daji cekat stejne hodnoty. Pak uz se linearne testuje klasicka rovnost. Proto i kdyz jsou vysledky hash() stejne, klice nemusi byt vyhodnocene jako stejne. >>> True == 1 == -1j*1j == 1.0 True Zajimave taky je cteni o tom, ze CPython implementuje methodu __hash__() pro ruzne zakladni datove typy ruzne. BTW, prosim postujte ozobackovane radky odsazene. Diky. :-) V. On 5.4.2017 22:20, Petr Přikryl wrote: > Chlapi, co jste pili? S džusem, nebo jen tak? :) > > Ale nevidíte v tom žádnou záhadu, že ne? ;) > > Přidám tohle... > >>>> m = set() >>>> m > set() >>>> m.add('a') >>>> m > {'a'} >>>> m.add(2) >>>> m > {2, 'a'} >>>> m.add(1) >>>> m > {1, 2, 'a'} >>>> m.add(True) >>>> m > {1, 2, 'a'} >>>> m.add(1.0) >>>> m > {1, 2, 'a'} >>>> m.add(False) >>>> m > {False, 1, 2, 'a'} >>>> m.add(0) >>>> m > {False, 1, 2, 'a'} >>>> m.add(0.0) >>>> m > {False, 1, 2, 'a'} > > Mějte se fajn, > Petr > > ______________________________________________________________ >> Od: Pavel Schön <pa...@schon.cz> >> Komu: python@py.cz >> Datum: 11.05.2015 12:46 >> Předmět: Re: [python] Pulnocni rozjimani :-) >> >> $ python >> Python 2.6.6 (r266:84292, Nov 21 2013, 10:50:32) >> [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 >>>>> a = 256 >>>>> b = 256 >>>>> a is b >> True >>>>> a = 257 >>>>> b = 257 >>>>> a is b >> False >> >> >> On Sunday, May 10, 2015 at 1:05:58 AM UTC+2, Vladimir Macek wrote: >>> Just having fun. >>> >>> $ python >>> >>> a = {} >>> >>> b = {'a': a} >>> >>> a['b'] = b >>> >>> a >>> {'b': {'a': {...}}} >>> >>> b >>> {'a': {'b': {...}}} >>> >>> import cPickle >>> >>> ap = cPickle.dumps(a) >>> >>> del a, b >>> >>> len(ap) >>> 26 >>> >>> a = cPickle.loads(ap) >>> >>> a >>> {'b': {'a': {...}}} >>> >>> a['b'] >>> {'a': {'b': {...}}} >>> >>> a['b']['a'] >>> {'b': {'a': {...}}} >>> >>> a['b']['a']['b'] >>> {'a': {'b': {...}}} >>> >>> >>> >>> Navaze nekdo? :-) >>> >>> V. >>> >>> >>> --- news://freenews.netfront.net/ - complaints: n...@netfront.net --- >> _______________________________________________ >> Python mailing list >> python@py.cz >> http://www.py.cz/mailman/listinfo/python >> >> Visit: http://www.py.cz >> _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz