从带有条件参数的列表列表中减去列表列表
subtract list of lists from list of lists with conditional arguments
我遇到了一个很难解决的棘手问题。
我有两个列表列表:
firstList = [[0, 9], [0, 4], [0]]
secondList = [[18], [19, 7], [20]]
我想按升序从 secondList
中的值中减去 firstList
中的值,但是 仅 如果 firstList
还没有 "used"。例如:
thirdList = [0,4]
fourthList = [19,7]
emptyList = []
emptyList.append(fourthList-thirdList]
print(emptyList)
>>>[7,3]
在这种情况下,未使用 19
,因为在 fourthList 中的先前值和 19
之间的 thirdList 中没有值
我在想这样的事情(虽然它很快分解成伪代码)
firstList = [[0, 9], [0, 4], [0]]
secondList = [[18], [19, 7], [20]]
emptyList = [ [] for y in range(3) ]
for x in range(3) :
#for smallest value in secondList[x], subtract all smaller values in firstList and then delete them, append values to emptyList[x]
#for next smallest value in secondList[x], subtract all smaller values in firstList and then delete them, append values to emptyList[x]
#repeat until firstList is empty, then exit loop
print(emptyList)
>>>[[9, 18], [3, 7], [20]]
这将排除在 secondList[1] 中使用 19
,因为 0
和 4
在从 7
[=22= 中减去之后已经被删除]
firstList = [[0, 9], [0, 4], [0]]
secondList = [[18], [19, 7], [20]]
all_results = []
for x in range(0, len(firstList)):
values_of_first = firstList[x]
values_of_second = secondList[x]
values_of_first.sort()
values_of_second.sort()
tmp_results = []
for subtractor in values_of_second:
used_values = []
for subtracted in values_of_first:
if subtracted >= subtractor:
break
else:
used_values.append(subtracted)
tmp_results.append(subtractor - subtracted)
for used_value in used_values:
values_of_first.remove(used_value)
tmp_results.sort()
all_results.append(tmp_results)
它产生all_results == [[9, 18], [3, 7], [20]]
我遇到了一个很难解决的棘手问题。
我有两个列表列表:
firstList = [[0, 9], [0, 4], [0]]
secondList = [[18], [19, 7], [20]]
我想按升序从 secondList
中的值中减去 firstList
中的值,但是 仅 如果 firstList
还没有 "used"。例如:
thirdList = [0,4]
fourthList = [19,7]
emptyList = []
emptyList.append(fourthList-thirdList]
print(emptyList)
>>>[7,3]
在这种情况下,未使用 19
,因为在 fourthList 中的先前值和 19
我在想这样的事情(虽然它很快分解成伪代码)
firstList = [[0, 9], [0, 4], [0]]
secondList = [[18], [19, 7], [20]]
emptyList = [ [] for y in range(3) ]
for x in range(3) :
#for smallest value in secondList[x], subtract all smaller values in firstList and then delete them, append values to emptyList[x]
#for next smallest value in secondList[x], subtract all smaller values in firstList and then delete them, append values to emptyList[x]
#repeat until firstList is empty, then exit loop
print(emptyList)
>>>[[9, 18], [3, 7], [20]]
这将排除在 secondList[1] 中使用 19
,因为 0
和 4
在从 7
[=22= 中减去之后已经被删除]
firstList = [[0, 9], [0, 4], [0]]
secondList = [[18], [19, 7], [20]]
all_results = []
for x in range(0, len(firstList)):
values_of_first = firstList[x]
values_of_second = secondList[x]
values_of_first.sort()
values_of_second.sort()
tmp_results = []
for subtractor in values_of_second:
used_values = []
for subtracted in values_of_first:
if subtracted >= subtractor:
break
else:
used_values.append(subtracted)
tmp_results.append(subtractor - subtracted)
for used_value in used_values:
values_of_first.remove(used_value)
tmp_results.sort()
all_results.append(tmp_results)
它产生all_results == [[9, 18], [3, 7], [20]]