Фильтрация списка строк по динамике c количеству элементов - PullRequest
1 голос
/ 06 мая 2020

Мне нужно написать функцию, которая фильтрует список строк по нескольким условиям:

Если я использую одно условие, это будет выглядеть так:

def get_newest(inputlist, filter_):
    small_list = [el for el in inputlist if filter_ in el]
    return small_list


smaller = get_newest(lines, "condition1")
smaller

Однако функция должен быть динамическим c, поэтому понимание списка будет выглядеть так для двух аргументов:

small_list = [el for el in inputlist if filter_ in el and filter_2 in el]

Это, конечно, не динамическое c.

Передача списка как одного аргумент приводит к ошибке:

TypeError: 'in <string>' requires string as left operand, not list

Как мне это сделать?

1 Ответ

2 голосов
/ 06 мая 2020

Если я правильно понимаю, это ваша функция.

def get_newest(inputlist, filters):
    return [x for x in inputlist if all(f in x for f in filters)]

filters - это итерация фильтров, например ['substr1', 'substr2'].

...