提问者:小点点

为什么我不能使用循环在列表中创建列表?


我有这个代码(用于roomMap的左墙):

roomMap = []
ones = [1] * 50
for i in ones:
    roomMap = roomMap + [[i]]
    roomMap.append("\n")
print(len(roomMap))
print(roomMap)

它应该在50行上打印50然后[1],但它打印100然后重复[1],'\n'50次。
为什么会发生这种情况?


共3个答案

匿名用户

它打印100次并重复[1],'\n'50次,因为您将“\n”追加到房间图。

您所做的是将[1]和“\n”都添加到列表“Roommap”中。 因此,对于每一次迭代,您都要将2个元素([1]和“\n”)推送到列表中。 列表不是字符串,因此不需要追加空白字符。

匿名用户

尝试使用:

roomMap = []
ones = [1] * 50
for i in ones:
    roomMap = roomMap + [[i]]
print(len(roomMap))
for i in roomMap:
    print(i)

匿名用户

给你:

roomMap = [1] * 50 # Here, the list is filled with 1
print(len(roomMap))
for i in roomMap:
    print(i)

print()已经转到下一行。 此打印:

50
1
1
1
1 #etc..

如果您想要列表的列表,只需添加括号

roomMap = [[1]] * 50 #Here, the list is filled with [1]
print(len(roomMap))
for i in roomMap:
    print(i)

这张照片

50
[1]
[1]
[1] #etc..