从由空格分隔的单个输入整数列表创建2D数组

时间:2017-11-29 11:50:27

标签: python arrays python-3.x input

我在2 2 # denotes row, column of the matrix 1 0 0 0 # all the elements of the matrix in a single line separated by a single space. 解决了一些问题,我遇到了一个特殊问题,其中输入在测试用例中提供,如下所示:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;


namespace SomeProject.Models
{
    public class User 
    {
    [Key]
    public int UserId { get; set; }

    [Required]
    public string Name { get; set; }

  issue =>>  [Index("UniqueEmail", 2, IsUnique = true)]
    public string Email { get; set; }

    }
}

我没有得到如何用这种方式给出的输入初始化我的2D数组。

P.S。我不能使用split,因为它会将所有元素拆分到一个数组中,我必须从中再次读取每个元素。我正在寻找更简单和pythonic的方式。

2 个答案:

答案 0 :(得分:1)

您应该使用.split。您还需要将拆分字符串项转换为int。但是如果你想:

,你可以非常紧凑地做到这一点
rows, cols = map(int, input('rows cols: ').split())
data = map(int, input('data: ').split())
mat = [*map(list, zip(*[data] * cols))]
print(rows, cols)
print(mat)

<强>演示

rows cols: 2 2
data: 1 2 3 4
2 2
[[1, 2], [3, 4]]

如果在mat = [*map(list, zip(*[data] * cols))]上收到SyntaxError,请将其更改为

mat = list(map(list, zip(*[data] * cols)))

或者升级到更新的Python 3.;)

答案 1 :(得分:0)

在两个字符串上使用拆分后:

n_rows, n_cols = [int(x) for x in matrix_info_str.split(' ')]
split_str = matrix_str.split(' ')

我得到了:

matrix = [split_str[i : i + n_cols] for i in xrange(0, n_rows * n_cols, n_cols)]