删除列表中的列表

时间:2014-07-09 12:31:12

标签: python list integer indices

我有一个看起来像这样的列表

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是实际代码中的循环变量。

我正在调用列表来识别列表的位置,或者仅仅是我正在删除所有内容?

2 个答案:

答案 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]]  ] ]

您缺少逗号来分隔列表项。这现在有效但是这个列表结构确实应该避免,因为它使得访问列表中的项目非常麻烦。