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

我有这段代码(对于 roomMap 的左墙):


roomMap = []

ones = [1] * 50

for i in ones:

    roomMap = roomMap + [[i]]

    roomMap.append("\n")

print(len(roomMap))

print(roomMap)

它应该打印5050[1]行,但它打印100然后重复[1], '\n'50 次。

为什么会这样?


鸿蒙传说
浏览 57回答 4
4回答

繁花不似锦

干得好 :roomMap = [1] * 50 # Here, the list is filled with 1print(len(roomMap))for i in roomMap:    print(i)print() 已经转到下一行。这个打印:501111 #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..

忽然笑

尝试这个roommap=[]a=[[1]]*50for i in a:    roommap.append(i)print(len(a))print(*roommap,sep='\n')

慕勒3428872

它打印 100 并重复 [1], '\n' 50 次,因为您将“\n”附加到 roomMap。您所做的是将 [1] 和“\n”都附加到列表“roomMap”中。因此,对于每一次迭代,您都将 2 个元素([1] 和“\n”)推送到列表中。列表不是字符串,因此您不需要附加空白字符。

Helenr

尝试使用:roomMap = []ones = [1] * 50for i in ones:    roomMap = roomMap + [[i]]print(len(roomMap))for i in roomMap:    print(i)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python