嵌套列表代码中缺少第一个列表

group = 0

position = 0

end = "n"


while (end == "n"):

    group = group + 1

    xy = [[] for xy in range(group)]

    xy[position].append(int(input("Input x value: ")))

    xy[position].append(int(input("Input y value: ")))

    position = position + 1

    end = input("Last entries? [y/n] ")


print (xy)

输出


Input x value: 1

Input y value: 2

Last entries? [y/n] n

Input x value: 3

Input y value: 4

Last entries? [y/n] y

[[], [3, 4]]

我的第一个清单不见了,我不明白为什么。如何解决这个问题?


月关宝盒
浏览 107回答 2
2回答

holdtom

发生这种情况是因为您在每个循环中都运行此行:xy = [[] for xy in range(group)]这将重新分配xy给一个空列表列表。考虑以下代码,它简化了您现有的工作:end = "n"xy = []while (end == "n"):    xy.append([int(input("Input x value: ")), int(input("Input y value: "))])    end = input("Last entries? [y/n] ")print (xy)

绝地无双

您每次都在重新定义列表 xy,因此所有列表都将被删除,只有最后一个会被保存。这是对其进行一些编辑的代码:end = "n"xy = []while (end == "n"):    a = int(input("Input x value: "))    b = int(input("Input y value: "))    xy.append([a,b])    end = input("Last entries? [y/n] ")print (xy)使用此代码,您甚至不需要使用group和position变量。您可以进一步简化它,但可读性较差:end = "n"xy = []while (end == "n"):    xy.append([int(input("Input x value: ")), int(input("Input y value: "))])    end = input("Last entries? [y/n] ")print (xy)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python