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

M.-A. Lemburg mal at lemburg.com
Thu Mar 13 11:39:13 EST 2003


Dinu Gherman wrote:
> M.-A. Lemburg:
> 
>> Gibt's doch schon seit Ewigkeiten: slice(links,rechts).
> 
> 
> Nicht wirklich...
> 
> Python 2.2.1 (#2, Sep 25 2002, 10:01:40)
> [GCC 3.1 20020420 (prerelease)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>  >>>
>  >>> slice(0,10)+slice(10,20)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: unsupported operand types for +: 'slice' and 'slice'
>  >>>
>  >>> 5 in slice(0,10)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: iterable argument required
>  >>>

slice() dient nur dazu das Konzept "Interval" abzubilden. Die
Funktionalität kommt erst duch die Anwendung auf eine
entsprechende Sequenz zustande. Das kann vieles sein: eine
Liste, die Menge der reellen Zahlen, ein Bildschirmbereich,
etc.

In Python können diese Objekte leicht mittels der Interval-
schreibweise erzeugt werden:

liste[links, rechts]

oder auch:

liste[links, ..., rechts]

Letzteres führt zum Aufruf von:

liste.__getitem__(slice(links, Ellipsis, rechts))

Was liste dann damit anfängt, ist Sache der Implementierung
von __getitem__.

 >>> class L:
...    def __getitem__(self, index):
...      print repr(index)
...      return 1
...
 >>> l = L()
 >>> l[1:5:2]
slice(1, 5, 2)
1
 >>> l[1,...,2]
(1, Ellipsis, 2)
1

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Software directly from the Source  (#1, Mar 13 2003)
 >>> Python/Zope Products & Consulting ...         http://www.egenix.com/
 >>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford:                                     19 days left
EuroPython 2003, Charleroi, Belgium:                       103 days left





More information about the Python-de mailing list