Python列表理解和list.remove()

时间:2011-11-17 04:31:32

标签: python list list-comprehension

列表signals_by_date存储元组,每个元组包含15个数字。对于signals_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]

2 个答案:

答案 0 :(得分:3)

最后一行应为:

signals_by_date[i] = [v for v in signals_by_date[i] if v >= 3]

答案 1 :(得分:1)

据推测,当您移除每个项目时,您正在移动列表中的项目,以便您跳过每隔一个项目。

一般来说,我认为列表推导是为了从现有列表中累积新列表,而不是对原始列表中的项目产生副作用;当然不会改变理解列表的结构。

相关问题