我的问题:
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的建议省略list
和map
:
maze = [int(input()) for _ in range(4)]
不确定你是否真的想要这样做,但是如果列表中的每个元素都要用它们自己的列表[[1001], [1110]]
包裹,那么在它周围放一个列表:
maze = [[int(input())] for _ in range(4)]