#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)]