【问题标题】:How to take input in list in python in which all input are in one line?python - 如何在所有输入都在一行中的python列表中输入?
【发布时间】:2020-06-20 21:30:16
【问题描述】:
s=input().split()
n,m=int(s[0]),int(s[1])
arr=(int(i) for i in s[2:])

输入喜欢

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

前两个是行和列 剩下的是二维列表元素

输出像

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

【问题讨论】:

    标签: python python-3.x list matrix


    【解决方案1】:

    试试这个方法:

    s = input().split()
    s = list(map(int, s))
    [s[2 + (i - 1) * s[1]: 2 + i * s[1]] for i in range(1, s[0] + 1)]
    

    输出:

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

    【讨论】:

      【解决方案2】:

      按照您的代码:

      arr = list(arr)
      blocks = [arr[i:i+m] for i in range(0, len(arr), m)]
      assert len(blocks) == n
      

      【讨论】:

        【解决方案3】:

        如果numpy 是一个选项,您可以简单地重塑一维数组:

        s = input().split()
        n,m = int(s[0]),int(s[1])
        arr = numpy.array(s[2:], dtype=int).reshape((n,m))
        

        您可以将其输出为 numpy 数组

        print(arr)
        # array([[ 1,  2,  3,  4],
        #       [ 5,  6,  7,  8],
        #       [ 9, 10, 11, 12]])
        

        或将其转换为嵌套列表

        print(arr.tolist())
        # [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
        

        【讨论】:

          猜你喜欢
          • 2021-08-18
          • 2018-09-27
          • 2020-11-08
          • 2023-01-02
          • 2013-11-06
          • 2014-05-09
          • 2015-03-09
          • 2023-04-08
          • 2018-03-04
          相关资源
          最近更新 更多