输入二维字符串并打印



我的问题:

maze = [list(map(int, input())) for _ in range(4)]
print(maze)

输入:

101111
101010
101011
111011

输出:

[[1, 0, 1, 1, 1, 1], [1, 0, 1, 0, 1, 0], [1, 0, 1, 0, 1, 1], [1, 1, 1, 0, 1, 1]]

我认为输出是

[[101111], [11010], [101011], [111011]]

因为在python中,当我们使用input函数时,我们得到的是string。因此字符串转换为int通过int()函数(在map中)。为什么不是输出?

map()接受您的输入,例如"101111"并逐个字符地迭代它,将其转换为int,即运行int("1"),int("0")等函数。最后得到6个整数1, 0, 1, 1, 1, 1

list()然后将其转换为列表,因此您得到[1, 0, 1, 1, 1, 1]

由于for循环,这将执行4次。最终的结果是一个单位数int型列表的列表。

要获得类似[1001, 1110]的输出,您可以按照Tomerikoo的建议省略listmap:

maze = [int(input()) for _ in range(4)]

不确定你是否真的想要这样做,但是如果列表中的每个元素都要用它们自己的列表[[1001], [1110]]包裹,那么在它周围放一个列表:

maze = [[int(input())] for _ in range(4)]

最新更新