Python 列表推导与 list.remove()
这个列表 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]