Есть ли функция, которая перебирает список строк и удаляет элементы с разными индексами, как этот код ниже (я знаю, что это неправильно) - PullRequest
0 голосов
/ 30 марта 2020
def skip(elements):

    for x in elements:
       if x.index == 1 or 3 or 5:
       new_skip = elements.remove(x)
       return new_skip

print(skip(["a", "b", "c", "d", "e", "f"])
#should return "a", "c", "e" 
  • Мне не разрешено объявлять список удаления.
  • функция должна удалить несколько элементов, используя индекс или любой другой параметр.

Спасибо большое.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Нелегко удалить несколько элементов на основе индекса, так как при удалении одного элемента другой элемент перемещается из одной позиции, вы должны оставить хорошие, те, которые не находятся в no-take позиция, с легким пониманием списка

def skip(elements, indices):
    return [elt for idx, elt in enumerate(elements) if idx not in indices]

if __name__ == "__main__":
    print(skip(["a", "b", "c", "d", "e", "f"], {1, 3, 5}))  # ['a', 'c', 'e']

расширенная версия

def skip(elements, indices):
    result = []
    for idx, elt in enumerate(elements):
        if idx not in indices:
            result.append(elt)
    return result
0 голосов
/ 30 марта 2020

Если вы хотите «удалить / удалить» элементы из заданного списка по некоторым фиксированным индексам, вы можете использовать понимание списка со встроенной функцией enumerate:

unwanted_indices = {1, 3, 5}

def skip(elements):
    return [e for i, e in enumerate(elements) if i not in unwanted_indices]

print(skip(["a", "b", "c", "d", "e", "f"]))

output:

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