Any other Python flaws?
phil hunt
philh at comuno.freeserve.co.uk
Fri Jun 15 07:07:07 EDT 2001
On 15 Jun 2001 00:37:22 -0700, Martin Sandin <msandin at hotmail.com> wrote:
>> ...I got an array with 100 elements, all 0.
>>
>> I think python is OK here.
>
>Except you didn't =) You got a list of 10 references to a list with 10
>references to the number 0.
No, I didn't. (Replacing 10 with 3 for concision):
philh:~> python
Python 2.0 (#1, Jan 19 2001, 17:54:27)
[GCC 2.95.2 19991024 (release)] on linux2
Type "copyright", "credits" or "license" for more information.
>>> array = ([0] * 3) * 3
>>> array
[0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> array[2] = 2
>>> array
[0, 0, 2, 0, 0, 0, 0, 0, 0]
If I'd got a list of lists, it would have looked like:
[[0,0,0], [0,0,0], [0,0,0]]
> That the inner list is a list of
>references to the same object doesn't matter much,
But it isn't. When I change one value, doesn't change the others.
If i wanted a reference I could say something like:
>>> a = [1]*3
>>> b =[a]*3
>>> b
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
>>> b[1][1]=2
>>> b
[[1, 2, 1], [1, 2, 1], [1, 2, 1]]
Note that if I now say:
>>> c=a*3
>>> c
[1, 2, 1, 1, 2, 1, 1, 2, 1]
>>> c[2]=3
>>> c
[1, 2, 3, 1, 2, 1, 1, 2, 1]
--
## Philip Hunt ##
## philh at comuno.freeserve.co.uk ##
More information about the Python-list
mailing list