我想在python中删除开头和结尾但不中间长度为1的所有列表

Maa*_*ant 7 python list

给定一个列表列表(即嵌套列表),我想从外部列表的开头和结尾删除所有长度为1的内部列表。例如

d = [[3], [1,5], [3], [3,2,4], [8], [3]]应该变成:[1,5], [3], [3,2,4]

对于列表的开头,我使用以下代码:

i = 0
while len(d[i]) == 1:
    d.remove(d[i])
    n = n -1
Run Code Online (Sandbox Code Playgroud)

最后,我使用以下代码:

 while len(d[n-1]) == 1:
    d.remove(d[n-1])
    n = n - 1
Run Code Online (Sandbox Code Playgroud)

其中 n = 列表数。

当我运行这个时,我得到:

[[1, 5], [3, 2, 4]]
Run Code Online (Sandbox Code Playgroud)

所以它还删除了中间长度为 1 的列表。我怎样才能更改代码以使其不这样做?

因此,对于许多n列表,我想删除开头的所有长度为 1 的列表,直到有一个列表的长度不为 1。我想对列表的末尾执行相同的操作。

For*_*Bru 1

由于您正在修改列表,所以不需要i或,因此它的第一个和最后一个元素发生变化,而不是它们的索引。n您可以按照以下方式做一些事情:

while d and len(d[0]) == 1:
    d.pop(0) # remove from head

while d and len(d[-1]) == 1:
    d.pop() # remove from tail
Run Code Online (Sandbox Code Playgroud)