У меня есть список списков со строками и пустыми строками. Моя цель - сохранить ту же структуру и данные (список списков), но удалить пустые строки. my_list = [["Том", "Мальчик и ...

-1
Guerrero 16 Янв 2021 в 17:29

3 ответа

Лучший ответ

Вы можете использовать вложенный анализ списка с условной проверкой пустой строки как:

my_list = [["Tom", "Boy", ""],["Ben", "Ten", ""]]

new_list = [[s for s in sub_list if s] for sub_list in my_list]
# where `new_list` will hold:
#   [['Tom', 'Boy'], ['Ben', 'Ten']]

Однако, как вы упомянули, ваша пустая строка всегда является последним элементом во вложенном списке. Вы можете использовать команду del, чтобы удалить последний элемент как:

my_list = [["Tom", "Boy", ""],["Ben", "Ten", ""]]
for sub_list in my_list:
    del sub_list[-1]

# New value of `my_list` will be:
#   [['Tom', 'Boy'], ['Ben', 'Ten']]

Или способ понимания списка пропустить последний элемент в подсписке:

new_list = [sub_list[:-1] for sub_list in my_list]
4
Moinuddin Quadri 16 Янв 2021 в 14:46

Вот как это выглядит с пониманием списка:

my_list = [["Tom", "Boy" ''],["Ben", "Ten", '']]

new_list = [[s for s in l if len(s)>0] for l in my_list]

print(new_list)

Вывод

[['Tom', 'Boy'], ['Ben', 'Ten']]
0
Marc Dillar 16 Янв 2021 в 14:32

Это работает для меня

x = [["dhasdjs","dsd"],["","sdds"]]
for lists in x:
    for item in lists:
        if item == "":
            lists.remove(item)
print(x)
-1
GameDev 16 Янв 2021 в 14:32
65750765