我有两个嵌套列表,格式如下:
a = [[1,2,3,4,5],[3,4,5,6,7,8,9],[5],[1,2,3,6,7,8,9]]
b = [[1,4],[6,9]]
我希望有一个函数可以接受这两个列表,使用列表b中每个子列表中的值,并用它来删除列表 a 中的值,使输出结果如下:
[[5],[5],[5],[]]
即函数应迭代列表a
中的所有值,并删除满足1 <= value <= 4
和6 <= value <= 9
的值。
目前我有这个:
def remove_unnecessary_peaks(peaks_total,peaks_to_be_excluded):
redacted_peak_list = peaks_total.copy()
i=0
for item in peaks_total:
for value_set in peaks_to_be_excluded:
for peak in item:
#print (value_set[0],peak,value_set[1])
if value_set[0]<=peak<=value_set[1]:
redacted_peak_list[i].remove(peak)
i=i+1
return (redacted_peak_list)
a = [[1,2,3,4,5],[3,4,5,6,7,8,9],[5],[1,2,3,6,7,8,9]]
b = [[1,4],[6,9]]
print(remove_unnecessary_peaks(a,b))
我通过执行
redacted_peak_list = peaks_total.copy()
来制作数据的副本,以便不会修改peaks_total
变量,因为这会使索引出现问题。在Spyder的调试模式下,我发现peak
变量没有正确地进行索引,我看到它从子列表a
跳过数字。
我的输出是[[2, 4, 5], [4, 5, 7, 9], [5], [2, 7, 9]]
,而我想要的是[[5],[5],[5],[]]