【问题标题】:Shortest way to input each and every element of a 2D Matrix输入二维矩阵的每个元素的最短方法
【发布时间】:2015-04-10 06:04:21
【问题描述】:

我想知道一个简单的方法来逐个输入二维矩阵的元素。 (仅使用默认的 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]]

【问题讨论】:

标签: python python-2.7 list matrix input


【解决方案1】:

冗长,但有效:

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

【讨论】:

  • 我一直使用 numpy,但在学校,我们不允许使用默认以外的模块 :(
【解决方案2】:

或者这个:

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

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], [3]] 而不是我想要的结果。我认为如果你有另一个列变量会更好。
  • 你在 raw_input 中插入了什么?
  • 您希望在 raw_input 中插入的格式是什么?
  • 只需输入每个数字并按回车即可。它有效,谢谢:)
【解决方案3】:

试试这个

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

print i

【讨论】:

  • 请检查编辑。您的程序具有相等的列和行,而且您的结果是:[[1], [2], [3]]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2023-03-25
相关资源
最近更新 更多