Удаление одного или нескольких значений кортежей из списка в Python.
Имеем список (list) из кортежей (tuple):
[(1598900760, 0),
(1598900820, 9052),
(1598900880, 4866),
(1598900940, 3742),
(1598901240, None),
(1598901297, 0)]
(1598900820, 9052),
(1598900880, 4866),
(1598900940, 3742),
(1598901240, None),
(1598901297, 0)]
Удалим отсюда все что является нулем или None.
for price in prices:
if price[1] == 0:
prices.remove(price)
for price in prices:
if price[1] is None:
prices.remove(price)
if price[1] == 0:
prices.remove(price)
for price in prices:
if price[1] is None:
prices.remove(price)
Получим
[(1598900820, 9052),
(1598900880, 4866),
(1598900940, 3742)]
(1598900880, 4866),
(1598900940, 3742)]
Казалось бы, можно объединить в один цикл:
for price in prices:
if price[1] == 0 or price[1] is None:
prices.remove(price)
if price[1] == 0 or price[1] is None:
prices.remove(price)
Но нет, в этом случае будет что-то вроде (не удалилось последнее значение):
[(1598900820, 9052),
(1598900880, 4866),
(1598900940, 3742),
(1598901297, 0)]
(1598900880, 4866),
(1598900940, 3742),
(1598901297, 0)]
Видимо это связано с особенностью создания объектов в python.