根据比较从另一个嵌套列表获得的值从嵌套列表中删除项目
Remove items from a nested list based on comparing values obtained from another nested 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]]
我想要一个函数,它将获取这两个列表,使用列表 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],[]]
您可以像这样使用列表理解:
[[i for i in s if not any(l <= i <= h for l, h in b)] for s in a]
这个returns:
[[5], [5], [5], []]
我有两个嵌套列表,形式如下:
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],[]]
您可以像这样使用列表理解:
[[i for i in s if not any(l <= i <= h for l, h in b)] for s in a]
这个returns:
[[5], [5], [5], []]