The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Programming Languages
> Python Programming
|
Bidimensional arrays in Python
Discuss Bidimensional arrays in Python in the Python Programming forum on Dev Shed. Bidimensional arrays in Python Python Programming forum discussing coding techniques, tips and tricks, and Zope related information. Python was designed from the ground up to be a completely object-oriented programming language.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

August 15th, 2003, 11:04 PM
|
 |
onCsdfeu
|
|
Join Date: Jul 2003
Location: Canada
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
(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
|

August 16th, 2003, 01:40 AM
|
|
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.
|

August 16th, 2003, 07:37 AM
|
|
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:
For more info, see Python Tutorial: List Comprehensions
Last edited by percivall : August 16th, 2003 at 07:40 AM.
|

August 16th, 2003, 10:04 AM
|
 |
onCsdfeu
|
|
Join Date: Jul 2003
Location: Canada
Posts: 100
Time spent in forums: 2 h 16 m 21 sec
Reputation Power: 10
|
|
|
Ah, that'll teach me to RTFM. Thanks.
|

August 18th, 2003, 07:42 AM
|
|
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:
This is essentially the same as the list comprehension in the earlier post, but a little less typing.
|

August 19th, 2003, 08:48 AM
|
 |
Hello World :)
|
|
Join Date: Mar 2003
Location: Hull, UK
|
|
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.
|

August 19th, 2003, 09:18 AM
|
|
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.
|

August 19th, 2003, 04:03 PM
|
 |
Hello World :)
|
|
Join Date: Mar 2003
Location: Hull, UK
|
|
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.
|

September 4th, 2003, 08:08 PM
|
|
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:
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]]
>>>
see note 2 on this page for more details: http://www.python.org/doc/current/lib/typesseq.html
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|