给定一个列表列表(即嵌套列表),我想从外部列表的开头和结尾删除所有长度为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。我想对列表的末尾执行相同的操作。
由于您正在修改列表,所以不需要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)