A question about reference in Python.
Chris Rebert
clp at rebertia.com
Mon Dec 8 01:13:46 EST 2008
On Sun, Dec 7, 2008 at 10:09 PM, James Mills
<prologic at shortcircuit.net.au> wrote:
> 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):
>
The following three lines serve no purpose and can only lead to confusion:
> 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):
>
Same with the following line. Why do you have these? Python does *not*
have the concept of instance variable declaration. You are creating
*class variables*, which is almost certainly not what you want.
> data = None
>
Cheers,
Chris
--
Follow the path of the Iguana...
http://rebertia.com
> 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"
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list