Перечислите ошибки понимания и синтаксиса с 3 аргументами - PullRequest
0 голосов
/ 07 марта 2019

Вот вопрос:

Реализация функции processList2(inputList, specialItem, ignoreItems), которая возвращает новый список, содержащий все элементы inputList (и в исходном порядке), за исключением

  1. Удалите все, что появляется в списке ignoreItems
  2. Вхождения specialItem (если specialItem отсутствует в ignoreItems) должны стать строкой "special" в новом списке.

Я пытаюсь создать новый список из inputList, используя понимание списка. Я могу получить items not in ignoreItems, но не могу понять, как напечатать 'special', если item == specialItem.

Вот что у меня есть:

def processList2(inputList, specialItem, ignoreItems):
    return [item for item in inputList if item not in ignoreItems]

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

>>> processList2([1,1,2,2], 1, [2])
['special', 'special']

или

>>> processList2([1,2,3,4,True,'dog'], 4, [3,5,4])
[1, 2, True, 'dog']

1 Ответ

5 голосов
/ 07 марта 2019

Вы можете использовать троичный оператор в Python.

def processList2(inputList, specialItem, ignoreItems):
    return [item if item != specialItem else "special" for item in inputList if item not in ignoreItems]

См. Также этот пост для получения дополнительной информации по теме.

...