我将此部分代码隔离用于测试目的和此问题
noTasks = int(input())
noOutput = int(input())
outputClist = []
outputCList = []
for i in range(0, noTasks):
for w in range(0, noOutput):
outputChecked = str(input())
outputClist.append(outputChecked)
outputCList.append(outputClist)
outputClist[:] = []
print(outputCList)
我这里有这个代码,我得到了这个输出
[[], []]
我无法弄清楚如何获得以下输出,我必须清除该子列表或我得到完全错误的东西...
[["test lol", "here can be more stuff"], ["test 2 lol", "here can be more stuff"]]
答案 0 :(得分:1)
而不是将outputClist
中包含的元素传递给outputCList
(不是最大的命名实践,或者只是将一个大写的中间部分作为变量名称的唯一区别),而是传递一个引用清单本身。为了解决您不想使用的Python这个重要且有用的功能,您可以通过更改此行轻松传递包含outputClist
元素的新列表
outputCList.append(outputClist)
到
outputCList.append(list(outputClist))
或等效地,正如@jonrsharpe在其评论中所述
outputCList.append(outputClist[:])
答案 1 :(得分:1)
在Python中,一切都是对象。列表是具有元素的对象。您只需创建一个对象outputclist
填充并清除其内容。最后,您在outputCList
中多次有一个列表,并且最后一件事是清除列表,此列表为空。
相反,您必须为每个任务创建一个新列表:
noTasks = int(input())
noOutput = int(input())
output = []
for i in range(noTasks):
checks = []
for w in range(noOutput):
checks.append(input())
output.append(checks)
print(output)