例如。
list = [['2', '2', '', ''], ['3', '3', '', ''], ['4', '4', '', '']]
我想要
newlist = [['2','2'],['3','3'],['4','4']]
是否有任何列表全面紧凑的方式来实现这一目标
对于1D数组我们有[x for x in strings if x]
是否有类似的东西。
答案 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]