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

Posted

技术标签:

【中文标题】如何读取用户的输入并创建二维列表?【英文标题】: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' 是一个元素,我该如何以上述形式做到这一点?感谢您的帮助。

【问题讨论】:

【参考方案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']]

【讨论】:

以上是关于如何读取用户的输入并创建二维列表?的主要内容,如果未能解决你的问题,请参考以下文章

在python中,我应该如何使用函数将文件读入二维列表后,不要让二维列表为空

基于用户输入的二维动态阵列

C ++根据用户输入字符串长度创建二维数组

jQuery写省级联动列表,创造二维数组,以及如何存/调用二维数组中的数据

如何从文本文件创建二维数组并在 c 中打印到新文件

C++中二维列表数组的动态初始化