New submission from TitanSnow <tttnns1...@gmail.com>:

``islice()`` does not support negative values for start or stop,
which does not matter for plain iterators.
However, for some cases, we have a sized iterable object
which is not subscriptable, using ``islice()`` makes
code ugly::

    d = OrderedDict()
    for i in range(10): d[i] = i
    dv = d.keys()
    # dv is a KeysView which is a sized iterable

    # now I wanna get a slice of dv which does not contain the last element
    islice(dv, len(dv) - 1)

As it shows, I have to use ``len(dv)`` to get its length.

For sized iterable objects, ``islice()`` could
support negative values for start or stop.
In this way, the above code can be written like this::

    islice(dv, -1)

For iterable objects which is not sized,
it could still be not supported::

    islice(iter(range(10)), -1)

raises a ValueError as its original behavior.

----------
components: Library (Lib)
files: islice.patch
keywords: patch
messages: 313517
nosy: tttnns
priority: normal
severity: normal
status: open
title: Make itertools.islice supports negative values for start and stop 
arguments for sized iterable object
type: enhancement
Added file: https://bugs.python.org/file47475/islice.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33040>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to