Функция, которая принимает два аргумента - функцию f и список l, применяет функцию к элементам списка и возвращает их в виде списка. - PullRequest
1 голос
/ 11 апреля 2020

Я сделал функцию:

def remove_trailing_newlines(s):
  s_clean = s.rstrip()
  return s_clean

Эта функция удалит завершающий \ n в конце строки s. Теперь я хочу применить то же самое к каждому элементу (который является строкой) списка.

Я хочу создать функцию mapl(f, l), где f - remove_trailing_newlines(), а l - список, к которому мы должны применить f и вернуть его в виде списка

Например: в списке l = ['Apple\n','banana\n','mango\n']

Я хочу вывод в виде: l = ['Apple','banana','mango'] с использованием функции mapl (f, l)

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Я думаю, что вы хотите сделать функцию наподобие встроенной функции карты самостоятельно. Попробуйте следующее:

def remove_trailing_newlines(s):
    s_clean = s.rstrip()

    return s_clean

def mapl(f,l):
    ret = []
    for i in l:
        ret.append(f(i))
    return ret

l = ['Apple\n','banana\n','mango\n']


new_list = mapl(remove_trailing_newlines,l)
print(new_list)

>> ['Apple', 'banana', 'mango']

Дайте мне знать, если оно не соответствует вашему требованию

0 голосов
/ 11 апреля 2020

Вы ищете:

list(map(remove_trailing_newlines, l))

Мы можем передать пользовательскую функцию и применить функцию к каждому элементу списка.

Вы также можете напрямую вызвать rstrip внутри map как в ответе @ yatu.

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