У меня есть два вложенных списка в форме:
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],[]]