Two dimensional array in python


Question

I want to know how to declare a two dimensional array in Python.

arr = [[]]

arr[0].append("aa1")
arr[0].append("aa2")
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")

The first two assignments work fine. But when I try to do, arr[1].append("bb1"), I get the following error:

IndexError: list index out of range.

Am I doing anything silly in trying to declare the 2-D array?

Edit:
but I do not know the number of elements in the array (both rows and columns).

1
38
10/12/2018 4:53:03 AM

Accepted Answer

You do not "declare" arrays or anything else in python. You simply assign to a (new) variable. If you want a multidimensional array, simply add a new array as an array element.

arr = []
arr.append([])
arr[0].append('aa1')
arr[0].append('aa2')

or

arr = []
arr.append(['aa1', 'aa2'])
64
2/2/2016 9:11:18 AM

There aren't multidimensional arrays as such in Python, what you have is a list containing other lists.

>>> arr = [[]]
>>> len(arr)
1

What you have done is declare a list containing a single list. So arr[0] contains a list but arr[1] is not defined.

You can define a list containing two lists as follows:

arr = [[],[]]

Or to define a longer list you could use:

>>> arr = [[] for _ in range(5)]
>>> arr
[[], [], [], [], []]

What you shouldn't do is this:

arr = [[]] * 3

As this puts the same list in all three places in the container list:

>>> arr[0].append('test')
>>> arr
[['test'], ['test'], ['test']]

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon