[Python-de] Intervalle (War: Wie schreibe ich inf als Literal?)

Dinu Gherman gherman at darwin.in-berlin.de
Fri Mar 14 12:11:36 EST 2003


M.-A. Lemburg:

>> Ok, ganz ketzerisch: was haben slices, was Tupel nicht haben? ;-)
>
> Grüne Nasen :-)

In Berlin steht man da nicht so drauf... Also wollen wir das mal etwas
differenzierter sehen? ;-)

   Python 2.2.2 (#1, Mar 13 2003, 12:11:28)
   [GCC 3.1 20020420 (prerelease)] on darwin
   Type "help", "copyright", "credits" or "license" for more information.
   >>> s = slice(10,20)
   >>> t = (10,20)
   >>> dir(s)
   ['__class__', '__cmp__', '__delattr__', '__doc__', 
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', 
'__repr__', '__setattr__', '__str__', 'start', 'step', 'stop']
   >>> dir(t)
   ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', 
'__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', 
'__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', 
'__mul__', '__ne__', '__new__', '__reduce__', '__repr__', '__rmul__', 
'__setattr__', '__str__']
   >>>
   >>> for a in dir(t):
   ...     if a not in dir(s):
   ...          print "'%s' in tuple, but not in slice" % a
   ...
   '__add__' in tuple, but not in slice
   '__contains__' in tuple, but not in slice
   '__eq__' in tuple, but not in slice
   '__ge__' in tuple, but not in slice
   '__getitem__' in tuple, but not in slice
   '__getslice__' in tuple, but not in slice
   '__gt__' in tuple, but not in slice
   '__le__' in tuple, but not in slice
   '__len__' in tuple, but not in slice
   '__lt__' in tuple, but not in slice
   '__mul__' in tuple, but not in slice
   '__ne__' in tuple, but not in slice
   '__rmul__' in tuple, but not in slice
   >>>
   >>> for a in dir(s):
   ...     if a not in dir(t):
   ...          print "'%s' in slice, but not in tuple" % a
   ...
   '__cmp__' in slice, but not in tuple
   'start' in slice, but not in tuple
   'step' in slice, but not in tuple
   'stop' in slice, but not in tuple
   >>>

Wenn man die Tupel-Vergleichsoperatoren mit __cmp__ in slices gleich-
setzt, heisst das doch, dass der Unterschied recht klein ist. Dann
sind slices lediglich eingeschraenkte Tupel (ohne +/*/in) der Laenge
2 oder 3, mit start/step/stop als "convenience attributes"... Also
definitiv nichts Intervall-aehnliches, oder?

> [...] Dafür sind slice()s zu allgemein. Es ist ohne Probleme
> möglich slices über nicht-numerische Bereiche zu definieren:

Schon, aber das macht ja nur Sinn, wenn man Elemente einer (halb?-)
geordneten Menge verwendet, oder? Also z.B.

   slice('Caligula', 'Hadrian', 2)

Hierbei wird die "Schrittweite" vermutlich meist (?) auch numerisch
sein. D.h. man definiert das Intervall ueber Elemente der Domain,
was nur eine abkuerzende Schreibweise sein kann, oder?

Ich bin immer noch nicht ueberzeugt, das slices so gut sind, wie sie
sein koennten, um mehr Intervallarithmetik zu betreiben, ein Feature,
das offenbar in vielen Sprachen fehlt (siehe meinen zuvor angegebenen
Link).

Dinu

--
Dinu C. Gherman
......................................................................
"Illusion is the first of all pleasures." (Oscar Wilde)





More information about the Python-de mailing list