Python 列表推导与 list.remove()

2 投票
2 回答
3964 浏览
提问于 2025-04-17 06:29

这个列表 signals_by_date 里存放的是一些元组,每个元组里有15个数字。我想从每个元组中去掉那些不符合特定条件的数字。但是不管我在列表推导式中设置什么条件,最后每个元组里总是剩下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 个回答

1

可以推测,当你删除每个项目时,你实际上是在移动列表中的其他项目,这样就会跳过每第二个项目。

一般来说,我觉得列表推导式的目的是从现有的列表中创建新的列表,而不是对原始列表中的项目产生副作用;当然也不是为了改变被理解的列表的结构。

3

最后一行应该是:

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

撰写回答