可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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 no. of elements in the array (both rows and columns).
回答1:
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'])
回答2:
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']]
回答3:
What you're using here are not arrays, but lists (of lists).
If you want multidimensional arrays in Python, you can use Numpy arrays. You'd need to know the shape in advance.
For example:
import numpy as np arr = np.empty((3, 2), dtype=object) arr[0, 1] = 'abc'
回答4:
You try to append to second element in array, but it does not exist. Create it.
arr = [[]] arr[0].append("aa1") arr[0].append("aa2") arr.append([]) arr[1].append("bb1") arr[1].append("bb2") arr[1].append("bb3")
回答5:
When constructing multi-dimensional lists in Python I usually use something similar to ThiefMaster's solution, but rather than appending items to index 0
, then appending items to index 1
, etc., I always use index -1
which is automatically the index of the last item in the array.
i.e.
arr = [] arr.append([]) arr[-1].append("aa1") arr[-1].append("aa2") arr.append([]) arr[-1].append("bb1") arr[-1].append("bb2") arr[-1].append("bb3")
will produce the 2D-array (actually a list of lists) you're after.
回答6:
We can create multidimensional array dynamically as follows,
Create 2 variables to read x and y from standard input:
print("Enter the value of x: ") x=int(input()) print("Enter the value of y: ") y=int(input())
Create an array of list with initial values filled with 0 or anything using the following code
z=[[0 for row in range(0,x)] for col in range(0,y)]
creates number of rows and columns for your array data.
Read data from standard input:
for i in range(x): for j in range(y): z[i][j]=input()
Display the Result:
for i in range(x): for j in range(y): print(z[i][j],end=' ') print("\n")
or use another way to display above dynamically created array is,
for row in z: print(row)
回答7:
a = [[] for index in range(1, n)]
回答8:
x=3#rows y=3#columns a=[]#create an empty list first for i in range(x): a.append([0]*y)#And again append empty lists to original list for j in range(y): a[i][j]=input("Enter the value")
回答9:
For compititve programming
1) For input the value in an 2D-Array
row=input() main_list=[] for i in range(0,row): temp_list=map(int,raw_input().split(" ")) main_list.append(temp_list)
2) For displaying 2D Array
for i in range(0,row): for j in range(0,len(main_list[0]): print main_list[i][j], print