[英]Two dimensional array in python
我想知道如何在 Python 中声明一个二维数组。
arr = [[]]
arr[0].append("aa1")
arr[0].append("aa2")
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")
前两个任务工作正常。 但是当我尝试执行arr[1].append("bb1")
,出现以下错误:
IndexError: list index out of range.
我在尝试声明二维数组时做了什么傻事吗?
编辑:
但我不知道数组中的元素数(行和列)。
你不要在 python 中“声明”数组或其他任何东西。 您只需分配给(新)变量。 如果你想要一个多维数组,只需添加一个新数组作为数组元素。
arr = []
arr.append([])
arr[0].append('aa1')
arr[0].append('aa2')
要么
arr = []
arr.append(['aa1', 'aa2'])
Python 中没有这样的多维数组,您拥有的是一个包含其他列表的列表。
>>> arr = [[]]
>>> len(arr)
1
您所做的是声明一个包含单个列表的列表。 所以arr[0]
包含一个列表,但arr[1]
没有定义。
您可以定义一个包含两个列表的列表,如下所示:
arr = [[],[]]
或者定义一个更长的列表,你可以使用:
>>> arr = [[] for _ in range(5)]
>>> arr
[[], [], [], [], []]
你不应该做的是:
arr = [[]] * 3
因为这会将相同的列表放在容器列表中的所有三个位置:
>>> arr[0].append('test')
>>> arr
[['test'], ['test'], ['test']]
你在这里使用的不是数组,而是列表(列表)。
如果你想要 Python 中的多维数组,你可以使用 Numpy 数组。 你需要提前知道形状。
例如:
import numpy as np
arr = np.empty((3, 2), dtype=object)
arr[0, 1] = 'abc'
您尝试附加到数组中的第二个元素,但它不存在。 创造它。
arr = [[]]
arr[0].append("aa1")
arr[0].append("aa2")
arr.append([])
arr[1].append("bb1")
arr[1].append("bb2")
arr[1].append("bb3")
我们可以如下动态创建多维数组,
创建 2 个变量以从标准输入读取 x 和 y:
print("Enter the value of x: ")
x=int(input())
print("Enter the value of y: ")
y=int(input())
使用以下代码创建一个初始值填充为 0 或任何值的列表数组
z=[[0 for row in range(0,x)] for col in range(0,y)]
为数组数据创建行数和列数。
从标准输入读取数据:
for i in range(x):
for j in range(y):
z[i][j]=input()
显示结果:
for i in range(x):
for j in range(y):
print(z[i][j],end=' ')
print("\n")
或使用另一种方式显示上面动态创建的数组是,
for row in z:
print(row)
在 Python 中构建多维列表时,我通常使用类似于 ThiefMaster 的解决方案,但不是将项附加到索引0
,然后将项附加到索引1
等,我总是使用索引-1
,它自动是最后一个的索引数组中的项。
IE
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")
将产生你所追求的二维数组(实际上是一个列表列表)。
您可以先将元素追加到初始化的数组中,然后为方便起见,您可以将其转换为 numpy 数组。
import numpy as np
a = [] # declare null array
a.append(['aa1']) # append elements
a.append(['aa2'])
a.append(['aa3'])
print(a)
a_np = np.asarray(a) # convert to numpy array
print(a_np)
a = [[] for index in range(1, n)]
用于竞争性编程
1) 用于输入二维数组中的值
row=input()
main_list=[]
for i in range(0,row):
temp_list=map(int,raw_input().split(" "))
main_list.append(temp_list)
2) 用于显示二维数组
for i in range(0,row):
for j in range(0,len(main_list[0]):
print main_list[i][j],
print
上述方法不适用于 for 循环,我想在 if 条件下将数据从二维数组传输到新数组。 这种方法会奏效
a_2d_list = [[1, 2], [3, 4]]
a_2d_list.append([5, 6])
print(a_2d_list)
OUTPUT - [[1, 2], [3, 4], [5, 6]]
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")
就我而言,我必须这样做:
for index, user in enumerate(users):
table_body.append([])
table_body[index].append(user.user.id)
table_body[index].append(user.user.username)
输出:
[[1, 'john'], [2, 'bill']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.