输入二维矩阵的每个元素的最短方法

Shortest way to input each and every element of a 2D Matrix

我想知道一种将二维矩阵的元素一个一个输入的简单方法。 (仅使用默认 python 模块)

我当前的代码:

i= []
for x in range(3):
    i.append(map(int, raw_input("enter the element").split()))
    for y in range(3):
        i.append(map(int, raw_input("enter the element").split()))
print i

我希望结果如下:

[[1,2,3],
 [4,5,6],
 [7,8,9]]

但最终得到:

[[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]]

我已经检查了潜在的重复项,但找不到任何会占用矩阵的每个元素的项。

任何简短的方法将不胜感激。

编辑: 行和列应该可以单独更改。 所以,如果我们输入3行4列,元素应该会自动放到各自的位置。

示例:对于 2x2 矩阵

如果输入是:1,2,1,2

那么矩阵应该是:

[[1,2],
 [1,2]]

试试这个

i= []
for x in range(3):
    i.append([int(j) for j in raw_input("enter the element").split()])

print i

或者这个:

更新: 更改为我猜你想要的格式:)

rows = 3
cols = 3
result = [[int(raw_input("row: %d col: %d  => " % (row, col))) 
           for col in xrange(cols)] for row in xrange(rows)]

冗长,但有效:

M = []
for i in range(rows):
    row = []
    M.append(row)
    for j in range(rows):
        x = raw_input("Number for element ({}, {}): ".format(i, j))
        row.append(int(x))

如果你正在处理矩阵,你也应该看看 NumPy。 那么你可以这样做:

import numpy as np
M = np.array((rows, cols))
for i in range(rows):
    for j in range(cols):
         M[i, j] = int(raw_input("Number: "))