Как удалить » (пустую строку) в списке списка в python?

#python #python-3.x #list #python-2.7 #tuples

Вопрос:

Я хочу удалить пустую строку («) в списке списка в python.

Мой вклад в это

 final_list=[['','','','',''],['','','','','',],['country','','','',''],['','','India','','']]  

Мой ожидаемый результат должен быть таким :

 final_list=[['country'],['India']]  

Я новичок в python, я просто попробовал это (Примечание* ниже пробованный код не предназначен)

 final=[] for value in final_list:  if len(set(value))==1:  print(set(value))  if list(set(value))[0]=='':  continue  else:  final.append(value)  else:  (final.append(value)  print(final)  

Может ли кто-нибудь помочь мне достичь ожидаемого результата? в общем смысле.

Ответ №1:

Вы можете использовать понимание списка, чтобы проверить, существуют ли какие-либо значения в вложенном списке, и вложенное понимание, чтобы извлекать только те значения, которые имеют значение

 [[x for x in sub if x] for sub in final_list if any(sub)]  

Ответ №2:

Попробуйте сделать следующее

 final_list=[['','','','',''],['','','','','',],['country','','','',''],['','','India','','']] lst = [] for e in final_list:  if any(e):  lst.append([x for x in e if x]) print(lst)  

выход

 [['country'], ['India']]  

Ответ №3:

Вы можете использовать понимание вложенного списка, при any котором проверяется, содержит ли список хотя бы одну строку, не пустую:

 gt;gt;gt; [[j for j in i if j] for i in final_list if any(i)] [['country'], ['India']]  

Ответ №4:

Если предположить, что строки внутри списка списка не содержат , , то

 outlist = [','.join(innerlist).split(',') for innerlist in final_list]  

Но если строки в списке списка могут содержать , , то

 outlist = [] for inlist in final_list:  outlist.append(s for s in inlist if s != '')  

Ответ №5:

Вы могли бы сделать следующее (используя мой модуль sbNative -gt; gt; python -m pip install sbNative )

  from sbNative.runtimetools import safeIter   final_list=[['','','','',''],['','','','','',],['country','','','',''],['','','India','','']]  for sub_list in safeIter(final_list):  while '' in sub_list: ## removing empty strings from the sub list until there are no left  sub_list.remove('')   if len(sub_list) == 0: ## checking and removing lists in case they are empty  final_list.remove(sub_list)  print(final_list)  

Ответ №6:

Используйте понимание списка, чтобы найти все подсписки, содержащие любое значение. Затем используйте фильтр, чтобы получить все записи в этом подсписке, которые содержат значение (здесь отмечено bool ).

 final_list = [list(filter(bool, sublist)) for sublist in final_list if any(sublist)]