Как удалить несколько элементов из вложенного списка в Python 3? - PullRequest
1 голос
/ 08 июня 2019

Как удалить несколько элементов из вложенного списка в Python 3, не используя список понимания?И время от времени Indexerror приходил, как с этим справиться?

split_list =[["a","b","c"],["SUB","d","e",],["f","Billing"]]
rem_word = ['SUB', 'Billing', 'Independent', 'DR']
for sub_list in split_list:
  for sub_itm in sub_list:
    if sub_itm not in rem_word:
        print(sub_itm)

Вывод получается так:

 a
 b
 c
 d
 e
 f

Ожидаемый вывод:

split_list =[["a","b","c"],["d","e",],["f"]]

Ответы [ 3 ]

2 голосов
/ 08 июня 2019

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

>>> split_list =[["a","b","c"],["SUB","d","e",],["f","Billing"]]
>>> rem_word = ['SUB', 'Billing', 'Independent', 'DR']
>>> output = [[sub_itm for sub_itm in sub_list if sub_itm not in rem_word] for sub_list in split_list]
[['a', 'b', 'c'], ['d', 'e'], ['f']]

Если вы хотите сделать это без понимания списка, вам нужно объявить свободный список, чтобы добавить каждый новый подсписок, а такженовый свободный подсписок, чтобы добавить все новые подпункты.Проверьте это:

output2 = []
for sub_list in split_list:
    new_sub_list = []
    for sub_itm in sub_list:
        if sub_itm not in rem_word:
            new_sub_list.append(sub_itm)
    output2.append(new_sub_list)

Выводит то же самое:

[['a', 'b', 'c'], ['d', 'e'], ['f']]
0 голосов
/ 08 июня 2019

[[x для x в z, если x! = 'SUB'] для z в split_list]

имейте ввиду, что это вложенный список. Рассматривайте x как подэлемент, а z как элемент. Также имейте в виду, что приведенный выше код удалит все «SUB». просто для удаления первого экземпляра используйте remove.

0 голосов
/ 08 июня 2019

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

split_list = [["a", "b", "c"], ["SUB", "d", "e", ], ["f", "Billing"]]
remove_list = ["SUB", "Billing", "INDEPENDENT", "DR"]
split_list = list(map(lambda x: list(filter(lambda i: i not in remove_list, x)), split_list))

print(split_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...