在 Python 中如何从二维数组中删除多余的 space 元素?

In Python how remove extra space elements from two dimensional array?

例如

list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']]

我想要

newlist = [['2','2'],['3','3'],['4','4']]

是否有任何列表综合紧凑的方法来实现这一点 像一维数组一样,我们有 [x for x in strings if x] 有没有类似的东西。

我想你的意思是你想从你的 2darray 中删除空元素。如果是这样的话:

old_list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']]
new_list = [[instance for instance in sublist if len(instance)>0] for sublist in old_list]

如果您希望删除仅包含空格(空格等)的元素,那么您可以这样做:

old_list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']]
new_list = [[instance for instance in sublist if not instance.isspace()] for sublist in old_list]

list = [[x for x in y if x != ''] for y in list]

您可以使用 filter 实现此目的。同样无关,但由于 list 是一个保留字,最好不要使用它并尝试想出一个更有意义的名称,我只是将它重命名为 original_list 自 list() 方法否则将无法工作。

original_list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']]
new_list = []
for sub_list in original_list:
    new_sub_list = list(filter(None, sub_list))
    new_list.append(new_sub_list)

print(new_list)

或者简而言之

new_list2 = [ list(filter(None, sub_list)) for sub_list in original_list ]
print(new_list2)

使用这个列表理解:

list = [[x for x in a if x] for a in list]