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

时间:2017-06-24 05:41:16

标签: python-3.4

例如。

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

我想要

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

是否有任何列表全面紧凑的方式来实现这一目标 对于1D数组我们有[x for x in strings if x]是否有类似的东西。

4 个答案:

答案 0 :(得分:3)

我认为你的意思是你希望从你的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]

如果您希望删除仅包含空格(空格等)的元素,那么yoy可能会执行以下操作:

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

希望这有帮助!

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您可以使用filter实现此目的。也不相关,但由于$stmt = $this->conn->prepare("UPDATE users SET marital_status= :marital_status, applicant_photo=:applicant_photo, date_of_birth=:date_of_birth, home_name=:home_name, birth_time=:birth_time WHERE user_id =:user_id"); $stmt->bindparam(":marital_status", $marital_status); $stmt->bindparam(":applicant_photo", $applicant_photo); $stmt->bindparam(":date_of_birth", $date_of_birth); $stmt->bindparam(":home_name", $home_name); $stmt->bindparam(":birth_time", $birth_time); $stmt->bindparam(":user_id", $user_id); $stmt->execute(); return $stmt; 是一个保留字,因此最好不要使用它并尝试提出一个更有意义的名称,因为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)

答案 3 :(得分:0)

使用此列表理解:

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