Python 删除列表中的列表
我有一张这样的清单Python 删除列表中的列表,python,list,integer,indices,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 li
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实际上是循环变量
是我调用列表来标识列表位置的错误,还是我删除了所有内容都不正确?您在第二行末尾漏掉了一个逗号。应该是:
x = [ [ [[guy, 100], [guy, 200]],
[[guy, 50], [guy, 60]] ],
[ [[guy, 10], [guy, 20]],
[[guy, 5], [guy, 6]] ] ]
事实上,您所说的错误不是来自del
命令,而是来自列表定义
<>你也应该考虑以更好的方式构造你的数据。我不确定是什么导致你对你的对象的这种“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]] ] ]
您缺少分隔列表项的逗号。现在可以这样做了,但确实应该避免这种列表结构,因为它使访问列表中的项目变得非常麻烦。我认为您可能在列表中删除了一些逗号,可能是在第2/4行的末尾。