假设我们有一个如下所示的列表:
L = [0, 1, [2, [3, 4], 5], [6, 7]]
在不删除子列表的情况下,清除每个子列表中的所有元素的最佳方法是什么?例如,在这种情况下,返回值为:
>>> clearsublists(L)
[[[]], []]
编辑:有很多方法可以使用不稳定的字符串方法,例如将列表转换为字符串并计算符号'[','('和'{')出现的次数,但如果你这样做会搞砸有一个deques列表,例如,deque将显示为deque([]),使程序认为实际上只有一个子集,当它真的只有一个。
答案 0 :(得分:4)
对于任意深度,请使用递归:
def clearsublists(L):
return [clearsublists(l) for l in L if isinstance(l, list)]
答案 1 :(得分:2)
def clear(L):
if not L:
return []
else:
return [clear(i) for i in L if isinstance(i, list)]
输出:
>>> L = [0, 1, [2, [3, 4], 5], [6, 7]]
>>> clear(L)
[[[]], []]