gpt4 book ai didi

python-3.x - 根据比较从另一个嵌套列表获得的值从嵌套列表中删除项目

转载 作者:行者123 更新时间:2023-12-03 19:36:44 25 4
gpt4 key购买 nike

我有两个嵌套的列表:


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 <= 46 <= 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 的 Debug模式下,我看到变量 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]

返回:

[[5], [5], [5], []]

关于python-3.x - 根据比较从另一个嵌套列表获得的值从嵌套列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52853641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com