Поиск по сайту:

Как удалить истинные значения в списке Python?


В Python списки, пожалуй, являются наиболее часто используемыми структурами данных, которые позволяют нам хранить различные элементы. Время от времени мы можем столкнуться с обстоятельствами, когда нам действительно хочется удалить явные элементы из списка. В этой статье мы обсудим пять различных методов удаления значений True из списка Python. Мы рассмотрим алгоритм, приведем примеры кода, покажем результат и завершим сравнением методов.

Введение

Рассмотрим ситуацию, когда у нас есть список, содержащий комбинацию логического типа и различных типов информации, и нам нужно удалить из этого списка все события True. Python предоставляет нам несколько способов справиться с этой задачей. Мы рассмотрим 6 различных методов, чтобы уделять особое внимание различным склонностям и вариантам использования.

Давайте сначала рассмотрим пример ввода и вывода.

Ввод

[True, 2, False, True, 4, True, 6, True]

Вывод

[2, False, 4, 6]

Объяснение: True — это логическое значение, представляющее логическое состояние True. Есть 2 встроенных логических константы: True и False.

Наша цель — удалить значения True из списка и оставить все остальные значения. Во входных данных выше True встречается в позициях (не индексах) 1,4,6,8, которые удаляются и, следовательно, оставляют нас позади с остальной частью списка, состоящей из значений 2, False, 4 и 6.

Метод 1: Наивный метод

Алгоритм

  • Создайте функцию delete_true_naive, которая принимает список информации в качестве объекта конкуренции.

  • Установите для переменной списка значение 0.

  • Хотя список не соответствует длине информационного списка:

  • Предполагая, что элемент текущего списка имеет значение True, удалите его с помощью метода pop().

  • В любом случае увеличьте список на 1.

  • Вернуть измененный список информации

Пример

def delete_true_naive(input_list):
    index = 0
    while index < len(input_list):
        if input_list[index] == True:
            input_list.pop(index)
        else:
            index += 1
    return input_list
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Naive Method Output:", delete_true_naive(sample_list.copy()))

Выход

Naive Method Output: [2, False, 4, 6]

Метод 2: использование понимания списка

Алгоритм

  • Создайте возможность delete_true_list_comrehension, которая признает список данных как конфликт.

  • Используйте восприятие списка, чтобы сделать еще одно краткое изложение, объединяющее только те компоненты из списка данных, которые не идентичны действительным.

  • Верните новое изложение.

Пример

def delete_true_list_comprehension(input_list):
    return [element for element in input_list if element != True]

sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using list comprehension output:", delete_true_list_comprehension(sample_list.copy()))

Выход

Using list comprehension output: [2, False, 4, 6]

Стратегия 3. Использование функции filter() с функцией Lambda.

Алгоритм

  • Создайте возможность delete_true_filter, которая признает список данных спорным.

  • Используйте возможность канала() рядом с возможностью лямбда-выражения для фильтрации компонентов из списка данных, которые не сопоставимы с допустимыми.

  • Преобразуйте изолированный результат обратно в краткое изложение, используя функцию rundown().

  • Вернуть отфильтрованный список.

Пример

def delete_true_filter(input_list):
    return list(filter(lambda x: x != True, input_list))
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using filter() Result:", delete_true_filter(sample_list.copy()))

Выход

Using filter() Result: [2, False, 4, 6]

Стратегия 4: Использование метода удаления()

Алгоритм

  • Создайте функцию delete_true_remove, которая распознает конфликт списка данных.

  • Используйте некоторый временной круг для перефразирования в течение любого периода времени, доступного в списке данных.

  • Внутри круга используйте метод устранения(), чтобы исключить важный элемент Valid из списка.

  • Вернуть измененный список данных.

Пример

def delete_true_remove(input_list):
    while True in input_list:
        input_list.remove(True)
    return input_list 
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using remove() Result:", delete_true_remove(sample_list.copy()))

Выход

Using remove() Result: [2, False, 4, 6]

Метод 5: использование функции List Comprehension и enumerate()

Алгоритм

  • Создайте функцию delete_true_enum, которая принимает список информации в качестве объекта конкуренции.

  • Используйте понимание списка вместе с функцией count(), чтобы выделить информацию из списка, одновременно отслеживая как список, так и значение каждого элемента.

  • Запомните только те элементы нового списка, значение которых не эквивалентно True.

  • Верните новый список.

Пример

def delete_true_enum(input_list):
    return [value for index, value in enumerate(input_list) if value != True]
# Sample list
sample_list = [True, 2, False, True, 4, True, 6, True]
# Output
print("Using List Comprehension and enumerate() Output:", delete_true_enum(sample_list.copy()))

Выход

Using List Comprehension and enumerate() Output: [2, False, 4, 6]

Способ 6: использование itertools.filterfalse()

Модуль itertools обычно используется для обработки сценариев итерации, а filterfalse используется для возврата значений, которые возвращают ложное значение из указанной функции. Он принимает 2 входа: функция; объект для итерации; Значение, которое возвращает filterfalse, — это значение, возвращающее false после передачи функции (переданной в качестве аргумента).

Алгоритм

  • Прежде всего мы импортируем функцию filterfalse() из модуля itertools.

  • Следующим шагом будет создание функции delete_true_itertools, которая принимает входной список в качестве аргумента.

  • Затем мы используем filterfalse() с лямбда-функцией, чтобы отфильтровать значения True из списка.

  • После этого мы преобразуем отфильтрованный результат обратно в список с помощью функции list().

  • Наконец, верните новый список без значений True.

Пример

from itertools import filterfalse

def delete_true_itertools(input_list):
    return list(filterfalse(lambda x: x == True, input_list))

sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using itertools.filterfalse() Result:", delete_true_itertools(sample_list.copy()))

Выход

Using itertools.filterfalse() Result: [2, False, 4, 6]

Заключение

В этом посте мы узнали о 6 различных способах избавиться от значений True из списка в Python, и они включают в себя наивный подход, понимание списка, filter() с лямбда-функцией, функцию удаления и понимание списка в сочетании с перечислением.(). Наконец, среди доступных способов также имеется функция filterfalse модулей itertools. Лучший подход будет зависеть от конкретного варианта использования и требований к производительности, хотя для небольших списков все методы могут эффективно удалять значения True.

Статьи по данной тематике: