On Oct 29, 2012 7:10 AM, "Andrew Robinson" <andr...@r3dsolutions.com> wrote:
> I will be porting Python 3.xx to a super low power embedded processor 
> (MSP430), both space and speed are at a premium.
> Running Python on top of Java would be a *SERIOUS* mistake.  .NET won't even 
> run on this system. etc.

If that's the case, then running Python at all is probably a mistake.
You know the interpreter alone has an overhead of nearly 6 MB?

> Yes, I realize that.
> But, why can't I just overload the existing __getitem__ for lists and not 
> bother writing an entire class?

You can just overload that one method in a subclass of list.  Being
able to monkey-patch __getitem__ for the list class itself would not
be advisable, as it would affect all list slicing anywhere in your
program and possibly lead to some unexpected behaviors.

> Hmmm..
> Let's try your example exactly as shown...
>
> "hello world"[aslice]
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> NameError: name 'aslice' is not defined
>
> WOW. Cool.
> Where did the blanks *actually* get filled in?  Or HOW WILL they in your next 
> post?

It appears that Steven omitted the definition of aslice by mistake.
It looks like it should have been:

aslice = slice(4, None, 2)

>  Looking at some of the online programming notes -- a slice apparently 
> doesn't use an integer storage variable that is capable of arbitrary 
> expansion. =-O -- and hence, won't work for very large sized lists.  That 
> actually explains some crashes I have noted in the past when working with 20 
> million element lists that I wanted a slice of.  I had *plenty* of ram on 
> that system.

20 million is nothing.  On a 32-bit system, sys.maxsize == 2 ** 31 -
1.  If the error you were seeing was MemoryError, then more likely you
were running into dynamic allocation issues due to fragmentation of
virtual memory.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to