Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support |

#1
August 15th, 2003, 11:04 PM
 SolarBear
onCsdfeu

Join Date: Jul 2003
Posts: 100
Time spent in forums: 2 h 16 m 21 sec
Reputation Power: 10
Bidimensional arrays in Python

Hi, my problem is simple : I'm trying to make some 2x2 matrix operations, similar to the C code like
Code:
`int a[4][15]`

(not necessarily int). And honestly, I have no clue about how to do that in Python. So how can I do that ?

I COULD make a "flat", one-dimensional array, and take each x'th element, but I'd be surprised if nobody ever worked with Python and matrices.
__________________
Time is the greatest of teachers ; sadly, it kills all of its students.
- Hector Berlioz

#2
August 16th, 2003, 01:40 AM
 jeych
Junior Member

Join Date: Aug 2003
Posts: 6
Time spent in forums: < 1 sec
Reputation Power: 0
Hello,

I'm not trained in Python but isn't :

Code:
```>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> a[0]
[1, 2, 3]
>>> a[0][0]
1
>>> a[2][2]
9```

what you're looking for ? Just an array of arrays

Julien.

#3
August 16th, 2003, 07:37 AM
 percivall
Contributing User

Join Date: Jul 2003
Posts: 133
Time spent in forums: < 1 sec
Reputation Power: 10
Also, note that what you will be creating is not an array, but a list. A mutable list. You can't directly create an empty array, but you can of course create an array filled with default values:
Code:
`[[0 for i in range(2)] for i in range(2)]`

will return:
Code:
`[[0, 0], [0, 0]]`

Last edited by percivall : August 16th, 2003 at 07:40 AM.

#4
August 16th, 2003, 10:04 AM
 SolarBear
onCsdfeu

Join Date: Jul 2003
Posts: 100
Time spent in forums: 2 h 16 m 21 sec
Reputation Power: 10
Ah, that'll teach me to RTFM. Thanks.

#5
August 18th, 2003, 07:42 AM
 FiveGrainJa
Junior Member

Join Date: Aug 2003
Location: Alexandria, VA
Posts: 5
Time spent in forums: < 1 sec
Reputation Power: 0
Another way of doing the same thing:

Code:
`[ [0] * 2 ] * 2`

This is essentially the same as the list comprehension in the earlier post, but a little less typing.

#6
August 19th, 2003, 08:48 AM
 netytan
Hello World :)

Join Date: Mar 2003
Location: Hull, UK
Posts: 2,537
Time spent in forums: 1 Week 2 Days 18 h 17 m 47 sec
Reputation Power: 68
Both do the same thing but making a list of 0 is pretty pointless . The first list compression does allow you to do allot more than the recusion though..

Code:
`[[i for i in range(10)] for i in range(2)]`

This will at least produce two list of numbers 0-9, but then why this would be useful I just don't know, ah maybe one day I will find a use for it

Thanks for the info though,

Take care guys,
Mark.

#7
August 19th, 2003, 09:18 AM
 percivall
Contributing User

Join Date: Jul 2003
Posts: 133
Time spent in forums: < 1 sec
Reputation Power: 10
List comprehension is most powerful when combined with a function, such as:
Code:
`[(lambda i: [i, chr(i)])(i) for i in range(65, 123)]`

This is of course also possible with a regular list comprehension...
Code:
`[[i, chr(i)] for i in range(65, 123)]`

Okay, not very useful. Anyway, it lets you do stuff in a nice way.

Last edited by percivall : August 19th, 2003 at 09:29 AM.

#8
August 19th, 2003, 04:03 PM
 netytan
Hello World :)

Join Date: Mar 2003
Location: Hull, UK
Posts: 2,537
Time spent in forums: 1 Week 2 Days 18 h 17 m 47 sec
Reputation Power: 68
I'd be enclined to use the second . Smaller and and nicer to look at, plus since it does less (doesnt create a lambda) it should be slightly more efficent (in theory). Does give some idea of whats possible. Good for setting up lists .

good to know thanks,
Mark.

#9
September 4th, 2003, 08:08 PM
 Strike
Contributing User

Join Date: Dec 2001
Location: Houston, TX
Posts: 383
Time spent in forums: 1 h 41 m 27 sec
Reputation Power: 12
Quote:
 Originally posted by FiveGrainJa Another way of doing the same thing: Code: `[ [0] * 2 ] * 2` This is essentially the same as the list comprehension in the earlier post, but a little less typing.

Actually, you don't want to do this, because of the following:

Code:
```>>> a = [[0]*2]*2
>>> a
[[0, 0], [0, 0]]
>>> a[0][0] = 1
>>> a
[[1, 0], [1, 0]]
>>>```

__________________
Debian - because life's too short for worrying.
Best. (Python.) IRC bot. ever.

 Viewing: Dev Shed Forums > Programming Languages > Python Programming > Bidimensional arrays in Python