我的代码遇到了问题:
我想最终得到一个数组
[
[ [a], [b], [c] ],
[ [d], [e], [f] ],
[ [g], [h], [i] ],
]
我写过
test = [][]
i = 0
j = 0
k = 'a'
while i < 3:
while j < 3:
test[i][j] = k
j += 1
k += 1
i += 1
print(test)
我的代码有什么问题? (目前是语法错误)
干杯
答案 0 :(得分:2)
您的代码失败,因为
[][]
这不是我们在python中创建2D列表的方式k
递增1,其中k
是一个字符串,而python中不允许这样做。您可以使用列表推导创建二维数组,例如
test = [[[chr(i + 97)] for i in range(j * 3, j * 3 + 3)] for j in range(3)]
您可以显式使用两个循环和chr函数来创建与ASCII值对应的字符,如下所示
matrix = []
for j in range(3):
row = []
for i in range(j * 3, j * 3 + 3):
row.append([chr(i + 97)])
matrix.append(row)
print matrix
<强>输出强>
[[['a'], ['b'], ['c']], [['d'], ['e'], ['f']], [['g'], ['h'], ['i']]]
答案 1 :(得分:1)
好的,如果您只需要确切的输出,请执行以下操作:
x = [[[a], [b], [c]], [[d], [e], [f]], [[g], [h], [i]]]
答案 2 :(得分:1)
a)此语法无效。 python中没有这样的构造。
test = [][]
b)你不能添加这样的元素:
L = []
L[0] = 1
c)同样正如GMPrazzoli指出的那样,禁止在字符串中添加数字
k = 'a'
#...
k += 1
首先,您需要创建一个列表,然后将 list 元素添加到外部列表中。
简单方法:
[[b for b in range(3)] for a in range(3)]
我想你想要列表中的字符。为此你需要使用
答案 3 :(得分:0)
如果你需要做很多数字操作,为什么不使用numpy库。
import numpy as Np
# create an array with required shape.
# Mind you cannot create an empty array.
# Best way to create a zero array or ones array.
shape_myarray=(3,3)
x=Np.zeros(shape_myarray)
y=Np.zeros(shape_myarray)
# You can index through the numpy array to update it with any value.
# Element wise addition is straight forward
z=Np.add(x,y) # make sure both the array is of same shape
检查以下链接。
http://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html http://docs.scipy.org/doc/numpy/reference/generated/numpy.add.html