A question about reference in Python.

James Mills prologic at shortcircuit.net.au
Mon Dec 8 01:09:13 EST 2008


Hi,

This is really really really pointless code and a really really pointless
exercise, but nonetheless, here is a very very basic and minimal
implementation of what you're expecting. This should almost
*never* be done in Python! Python is a superior dynamic programming
language, but it's NOT C!

Here goes:

jmills at atomant:~/tmp$ ./list.py
>>> x[0]
0
>>> x[1]
1
>>> x[2]
2
>>> x[3]
3
>>> x[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "./list.py", line 36, in __getitem__
    return node.value
AttributeError: 'NoneType' object has no attribute 'value'
>>>
jmills at atomant:~/tmp$

And the code:

#!/home/jmills/bin/python -i

class Node(object):

   value = None
   prev = None
   next = None

   def __init__(self, value, prev=None, next=None):
      self.value = value
      self.prev = prev
      self.next = next

class List(object):

   data = None

   def __init__(self, *seq):
      if seq:
         first = prev = node = None
         for x in seq:
            if not first:
               first = Node(x)
               prev = node = first
            else:
               node = Node(x, prev)
               prev.next = node
               prev = node

         self.data = first

   def __getitem__(self, x):
      node = self.data
      for i in xrange(x):
         node = node.next
      return node.value

x = List(0, 1, 2, 3)


Notes:

I have not implemented any error checking whatsoever.
I have not implemented any of your normal list
operations whatsoever (except 1). __getitem__.

Have fun,

cheers
James

On Mon, Dec 8, 2008 at 3:26 PM, Group <kermit.group at gmail.com> wrote:
> Hello, I'm studying algorithom. For concentrating on the question itself, I
> intend to use Python to implement the algorithoms.
>
> Now, I want to write a Red-Black Tree, and a List structure. In C/C++, I can
> use pointers to refer to  children  notes (or next notes). But, in Python,
> how
> can I do it? Except the sequence, I know not any way.
>
> You'd better help me understan how can I transform the following C code into
> Python:
>
> /* a List */
> struct {
>  int data;
>  int *next;
>  int *prev;
> }
>
> That's all. Thanks!
> Kermit
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
--
-- "Problems are solved by method"



More information about the Python-list mailing list