快速添加值到二维数组的方法

时间:2013-12-13 10:28:17

标签: python arrays

我的代码遇到了问题:

我想最终得到一个数组

[ 
  [ [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)

我的代码有什么问题? (目前是语法错误)

干杯

4 个答案:

答案 0 :(得分:2)

您的代码失败,因为

  1. [][]这不是我们在python中创建2D列表的方式
  2. 您将k递增1,其中k是一个字符串,而python中不允许这样做。
  3. 您可以使用列表推导创建二维数组,例如

    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)]

查找list comprehensions

我想你想要列表中的字符。为此你需要使用

  • Python 2文档:ordchr
  • Python 3文档:ordchr

答案 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