我有一个看起来像这样的列表
x = [ [ [[guy, 100], [guy, 200]],
[[guy, 50], [guy, 60]] ]
[ [[guy, 10], [guy, 20]],
[[guy, 5], [guy, 6]] ] ]
每个小名单,都是一个人,以及他在删除他之前离开的时间。我想这样做:
del x[0][0][0]
我不断得到的错误是:
TypeError: List indices must be integers not lists.
我知道该错误意味着什么,但我没有找到任何删除该列表的好方法。我听到的唯一建议是
del x[0][0][0][:]
这给了我同样的错误并且:
x[0][0][0] = []
这也给了我同样的错误。
这里的现实是,这是我的代码的简化版本。 0是实际代码中的循环变量。
我正在调用列表来识别列表的位置,或者仅仅是我正在删除所有内容?
答案 0 :(得分:1)
你错过了第二行末尾的逗号。它应该是:
x = [ [ [[guy, 100], [guy, 200]],
[[guy, 50], [guy, 60]] ],
[ [[guy, 10], [guy, 20]],
[[guy, 5], [guy, 6]] ] ]
实际上,您所说的错误并非来自del
命令,而是来自列表定义。
您还应该考虑以更好的方式构建数据。
答案 1 :(得分:0)
我不确定是什么原因导致你需要这种“3-D”阵列,比如对象的存储。您应该能够使用一维数组完成任务并将时间封装在一个类中。
class guy:
def __init__(self, time):
self.timeBeforeDelete = time
def __str__(self):
return "{0}".format(self.timeBeforeDelete)
def printList(aList):
for item in aList:
print item
if __name__ == '__main__':
x = [guy(100), guy(200), guy(50), guy(60), guy(10), guy(20), guy(5), guy(6)]
printList(x)
del x[1]
printList(x)
此代码允许您从列表中自由删除,并将程序的复杂性降至最低。你使用嵌套列表结构有什么特别的原因吗?要更多地了解您的错误,实际上您会遇到语法错误。
x = [ [ [[guy, 100], [guy, 200]],
[[guy, 50], [guy, 60]] ],
[ [[guy, 10], [guy, 20]],
[[guy, 5], [guy, 6]] ] ]
您缺少逗号来分隔列表项。这现在有效但是这个列表结构确实应该避免,因为它使得访问列表中的项目非常麻烦。