【问题标题】:How can I read inputs from user and create a 2-D List?如何读取用户的输入并创建二维列表?
【发布时间】:2015-08-13 22:57:33
【问题描述】:

我创建了一个二维数组,例如:

>>> a = [[0 for col in range(3)] for row in range(3)]

然后

>>> for i in range(3):
...       for j in range(3):
...           a[i][j]=input()
...

1 2 3
4 5 6
7 8 9

但它没有成功,python 认为 '1 2 3' 是一个元素,我该如何以上述形式做到这一点?感谢您的帮助。

【问题讨论】:

    标签: python list python-3.x variable-assignment


    【解决方案1】:

    您不必事先创建列表。您可以像这样直接在列表推导中创建它们

    >>> a = [[int(item) for item in input().split()] for row in range(3)]
    1 2 3
    4 5 6
    7 8 9
    >>> a
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    

    在这里,每当调用input 时,我们输入的任何内容都将被读取为单个字符串('1 2 3'),我们split 空格字符上的字符串(以获取['1', '2', '3'])并转换每个将字符串拆分为整数,带有int函数。

    【讨论】:

      【解决方案2】:

      您可以像这样拆分值:

      for i in range(3):
          a[i] = input().split(' ')
      

      【讨论】:

        【解决方案3】:

        对于以空格分隔的输入,您需要在 " " 上拆分输入文本

        a=[[0 for col in range(3)] for row in range(3)]
        
        for i in range(3):
            a[i][0], a[i][1], a[i][2] = map(int, raw_input().split())
        
        print a
        

        【讨论】:

          【解决方案4】:

          您可以在第一个列表组合中拆分并映射到 int,您不需要先创建列表,但请记住转换为 int 会使您的程序因无效输入而崩溃:

          a = [list(map(int,input().split())) for row in range(3)]
          
          print(a)
          [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
          

          当然,如果您不希望整数在空格上分割:

           a = [input().split() for row in range(3)]
           [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-08-27
            • 2019-11-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-12
            • 1970-01-01
            相关资源
            最近更新 更多