Понимание списка Python и list.remove()

В списке signal_by_date хранятся кортежи, и каждый кортеж содержит 15 чисел. Для каждого кортежа в signal_by_date я хочу удалить числа, которые не удовлетворяют определенным критериям. По какой-то причине, независимо от того, какие ограничения я наложил на понимание списка, у меня всегда остается 7 чисел в каждом кортеже. В приведенном ниже примере кода все числа меньше 3, поэтому я ожидаю, что каждый кортеж будет пустым. Что я делаю не так? Большое спасибо.

    signals_by_date = []
    for i in range(0, 1):
        temp_signals = []
        for symbol in symbols:        
            for signal in signals_by_symbol[symbol]:
            temp_signals.append(signal[i]-1)
        signals_by_date.append(temp_signals)
        [signals_by_date[i].remove(v) for v in signals_by_date[i] if v < 3]

person Community    schedule 17.11.2011    source источник
comment
Ум уточнять? Я новичок в кодировании и полностью самоучка, поэтому я всегда рад возможности изучить лучшие практики. Спасибо.   -  person    schedule 17.11.2011
comment
Трудно дать точный ответ без фактических данных, но я уверен, что все это можно сжать в одну строку.   -  person Ignacio Vazquez-Abrams    schedule 17.11.2011


Ответы (2)


Последняя строка должна гласить:

signals_by_date[i] = [v for v in signals_by_date[i] if v >= 3]
person Igor Nazarenko    schedule 17.11.2011
comment
Это сработало. Спасибо. Но что, если бы я хотел сделать что-то вроде этого: signal_by_date[i] = [v для v в signal_by_date[i], если v ‹= -.02 и v ›= .02] - person ; 17.11.2011
comment
Ваше условие будет оцениваться как ложное для каждого числа. Если вам нужны числа между -0,02 и 0,02, вы делаете: [v для v в x, если -0,02 ‹= v ‹= 0,02] - person Igor Nazarenko; 24.11.2011

Предположительно, когда вы удаляете каждый элемент, вы перемещаете элементы в списке так, что пропускаете просмотр каждого второго.

В общем, я считаю, что понимание списков предназначено для накопления новых списков из существующих, а не для создания побочных эффектов для элементов в исходном списке; и уж точно не менять структуру осмысленного списка.

person Larry Lustig    schedule 17.11.2011