0

过去几周我一直在学习 Python 3。我遇到了一个障碍:

从逻辑上讲,nestedLists[2][4] = "a" 这一行应该将这个列表列表中第三个列表的第五个成员设置为“a”。不幸的是,由于我不明白的原因,它将列表中每个列表的第 5 个成员设置为“a”。这是我的代码:

gameList = [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]

def buildList(gameListt):
    gameListt[0] = ("~ " * 60).split()
    for i in range(len(gameListt)):
        gameListt[i] = gameListt[0]
    return gameListt


gameList = buildList(gameList)

print(gameList)
gameList[2][4] = "a"
print(gameList)

我完全迷失在这里。语法检查得很好,当我尝试这个时:

gameList = [["c","a","t"],["h","a","t"]]

gameList[0][2] = "b"
print(gameList)

它工作正常,并输出“cab”和“hat”。我需要帮助!

提前致谢!

4

1 回答 1

2

gameList开始是一个不同列表的列表,但是在这里:

for i in range(len(gameListt)):
    gameListt[i] = gameListt[0]

您正在使 gameListt 的每个元素成为相同的列表

你应该做这样的事情

def buildList(gameListt):
    for i in gameListt:
        i[:] = ["~"] * 60
    return gameListt

此外,如果您像这样初始化 gameList:

gameList = [[] for x in range(15)]

更容易看到它有 15 个子列表

于 2013-03-31T03:47:42.263 回答