(对不起,如果我的标题令人困惑。我不确定如何描述这个问题)
我有以下格式的两个列表:
list_a = [[10, 1], [25, 2]] # list sorted base on the first element of each pair
list_b = [3, 14, 5, 26]
我试图查看在哪一点的总和list_b
大于中的总和list_a[i][0]
,如果是,则将list_a[i][1]
总和相加。考虑玩游戏并获得积分list_b
,当达到特定积分时获得奖励积分list_a
。
我的预期输出是数字序列。对于以上示例:
# [3, 3+14+1, 3+14+1+5, 3+14+1+5+26+2]
# 3+14+1 because 3+14 is greater than 10
# 3+14+1+5+26+2 because 3+14+1+5+26 is greater than 25
[3, 18, 23, 51]
我的尝试:
sum_b = 0 # used to track sum of items in list_b
output_list = []
for i in list_a:
for j in list_b:
# go over list b to get current sum
sum_b += j
if sum_b > i[0]: # when I see sum_b > i[0], I add i[1] to sum_b
sum_b += i[1]
output_list.append(sum_b)
# I want to keep going through the list to see when sum_b gets greater than 25 and add 2 to sum_b
力求贴近自己的尝试,但是,你方i
通过list_a
正常。这i
始终是下一个未使用的对list_a
(或者None
如果没有剩余的对),我在循环过程中的正确点使用它list_b
。
sum_b = 0 # used to track sum of items in list_b
output_list = []
iter_a = iter(list_a)
i = next(iter_a, None)
for j in list_b:
# go over list b to get current sum
sum_b += j
if i and sum_b > i[0]: # when I see sum_b > i[0], I add i[1] to sum_b
sum_b += i[1]
i = next(iter_a, None)
output_list.append(sum_b)
它只需要线性时间,因为我要并行浏览两个列表,而不是嵌套的全长循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句