why won't slicing lists raise IndexError?

Rick Johnson rantingrickjohnson at gmail.com
Wed Dec 6 18:08:51 EST 2017


On Wednesday, December 6, 2017 at 3:13:41 PM UTC-6, Python wrote:
[...]
> Geez, seriously?  The snippet is purely academic, obviously
> not a complete or useful program,

Who ever made the claim that it was?

> intended to illustrate that python can take two different
> branches depending on whether or not the slicing operation
> yeilded a non-empty container, using uncomplicated syntax.
> It effectively serves that purpose.

"Uncomplicated" is a relative term, not an absolute.

The following is Terry's original:

    if item:
        process(item)
    else:
        do_without_item()

And here is the functioning equivalent, sans any fuzzy
semantics:

    if item:
        process(item)
    else:
        pass

And finally, here is the functioning equivalent, sans the
fuzzy semantics *AND* the forced vist to a little "ghost
town".

    if item:
        process(item)

My point is simple: What good could possibly come from
posting bloat-ware example code? The else-clause is
superfluous. How many times must i explain this simple
concept before you will admit you are wrong?

> Moreover, in order for the example to make sense, we must
> assume the existence of unspecified code: The variables
> need to have been initialized previously, or else the
> snippet is non-functional.

Agreed.

> The if conditional would never be reached.  We can as
> easily assume that the hypothetical example continues with
> other, unspecified code, and that the equally unspecified
> do_without_item() actually does something,

Fine. Why stop at a single if/else binary? Why not offer
N more irrelevant clauses?

    import os, re
    value = "foo"
    if value:
        do_something1(value)
    elif isinstance(value, (int, float)):
        do_something_else1(value)
    elif os.path.exists(value):
        do_something_else2(value)
    elif re.match(r'.*ly', value):
        do_something_else3(value)
    else:
        do_nothing()

The possibilities are literally endless.

> which renders your argument completely invalid and
> pointless.

And that's an opinion you get to have.

> The whole thing is entirely academic; continuing to argue
> this is an utter waste of time and bandwidth.

Yet, here you are, apeaking on behalf of others. It boggles
the mind.

--

https://plus.google.com/u/0/collection/UAv9UE




More information about the Python-list mailing list