Python列表理解和list.remove()
列表按日期发送信号存储元组,每个元组包含15个数字。对于signals_by_date中的每个元组,我想删除不满足某些条件的数字。出于某种原因,无论我在列表理解中设置了什么约束,我总是在每个元组中保留7个数字。在下面的代码示例中,所有数字都小于3,因此我希望每个元组都是空的。我做错了什么?非常感谢Python列表理解和list.remove(),python,list,list-comprehension,Python,List,List Comprehension,列表按日期发送信号存储元组,每个元组包含15个数字。对于signals_by_date中的每个元组,我想删除不满足某些条件的数字。出于某种原因,无论我在列表理解中设置了什么约束,我总是在每个元组中保留7个数字。在下面的代码示例中,所有数字都小于3,因此我希望每个元组都是空的。我做错了什么?非常感谢 signals_by_date = [] for i in range(0, 1): temp_signals = [] for symbol in s
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]
按日期发送信号=[]
对于范围(0,1)中的i:
温度信号=[]
对于符号中的符号:
对于信号中的信号,按符号[symbol]:
温度信号附加(信号[i]-1)
按日期添加信号(临时信号)
[按日期[i]发送的信号。如果v<3,则在按日期[i]发送的信号中删除v的(v)]
大概,当您删除每个项目时,您正在移动列表中的项目,以便跳过每一个项目
总的来说,我认为清单理解的目的是从现有清单中累积新的清单,而不是对原始清单中的项目产生副作用;当然,不要改变综合列表的结构。最后一行应该是:
signals_by_date[i] = [v for v in signals_by_date[i] if v >= 3]
介意详细说明一下吗?我不熟悉编码,完全自学成才,所以我总是欢迎有机会学习更好的实践。谢谢。没有实际数据很难给出准确的答案,但我相当肯定所有这些都可以浓缩成一行。这很有效。谢谢但是,如果我想做这样的事情:signals_by_date[I]=[v for v in signals_by_date[I]如果v=.02]你的条件对每个数字都会求值为false。如果需要介于-0.02和-0.02之间的数字,可以在-0.02的情况下使用:[v代表x中的v]