先说结论,
list不支持squeeze操作。
对于numpy中的array对象,则可以直接使用squeeze函数进行单维度删除
具体使用方法可参考这篇文章Numpy库学习—squeeze()函数_o_Eagle_o的博客-CSDN博客
不过很遗憾,list就没有这么丝滑的方法了。
但是对于嵌套的list,比如下面这种形式:
list = [[1, 2, 3], [4, 5], [6]]
如果想要将其转为:
[1,2,3,4,5,6]
则可以使用如下三种方式:
# 方法一:
list_1 = [[1, 2, 3], [4, 5], [6]]
list_2 = []
for element in list_1:
list_2 += element
# 方法二:列表推导
list_1 = [[1, 2, 3], [4, 5], [6]]
list_2 = [value for sub_list in list_1 for value in sub_list]
# 方法三:使用sum
list_1 = [[1, 2, 3], [4, 5], [6]]
list_2 = sum(list_1, [])
不过,对于比较复杂的形式,比如
list = [1, [2], [[3]], [[4, [5], 6]], 7, [8]]
上述三种方法就无法解决了,可以通过递归的方式实现,
定义函数如下:
def flat(lists):
res = []
for candidate in lists:
if isinstance(candidate, list):
res.extend(flat(candidate))
else:
res.append(candidate)
return res
参考: