输入2D矩阵的每个元素的最短方式

时间:2015-02-10 09:07:52

标签: python list python-2.7 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]]

3 个答案:

答案 0 :(得分:3)

或者这个:

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

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

答案 1 :(得分:2)

详细,但有效:

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: "))

答案 2 :(得分:1)

试试这个

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

print i