如何从用户读取输入并创建二维列表?

时间:2015-05-31 12:16:31

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

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

>>> 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'是一个元素,我怎么能以上面的形式呢?感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

您不必事先创建列表。你可以像这样

在列表理解中直接创建它们
xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
....
xml.AddElem("Person", "Alive");
xml.SetAttrib("age", "12");
xml.SetAttrib("passed", "Yes");

在这里,每当调用>>> 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'是空格字符上的字符串(以获取{{} 1}})并使用split函数将每个拆分字符串转换为整数。

答案 1 :(得分:1)

您可以拆分这样的值:

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

答案 2 :(得分:1)

你可以在你的第一个列表comp中拆分并映射到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']]

答案 3 :(得分:1)

要进行空格分隔输入,您需要在" "

上拆分输入文本
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