我是一个Python新bie.
我有两个这样的列表列表:
A = List[List[float,float]]
B = List[List[float,float]]
两种不同的尺寸
例如:
A has [time, value]
B has [start_time, end_time]
A = [[0.0,10.0] , [1.0,10.0], [2.0,10.0], [3.0,10.0], [4.0,10.0], [5.0,10.0], [6.0,10.0]]
B = [[0.0,2.0], [5.0,6.0]]
我想要做的是:
如果A的时间不在B中,我应该将A中相应的“值”设为零.
所以输出将是:
[[0.0,10.0] , [1.0,10.0], [2.0,10.0], [3.0,0.0], [4.0,0.0], [5.0,10.0], [6.0,10.0]]
即,如果B中的时间段在A中没有相应的时间值,则对应于该时间的值应为零.在这种情况下,B中存在2到5之间的值,因此A中的’3’和’4’的伙伴值被设为零.
所以我得到的一个想法是将B转换为单个列表,然后比较AA和A的值.但是我没有取得多大进展.
AA = numpy.hstack(B) # for getting array of times
for i in 1: len(AA):
if (AA[i]==A[
解决方法:
对于简单的问题,嵌套循环设计通常可以让您快速解决,而无需担心列表展平函数的细节.
for i in range(len(A)):
time = A[i][0]
isValidTime = False
for time_segment in B:
if time_segment[0] <= time <= time_segment[1]:
isValidTime = True
break
if not isValidTime:
A[i][1] = 0.0
编辑:只是要清楚,包括’break’语句没有必要去解决方案,但它有助于避免不必要的计算.如果我们确定A中的项目确实有一个有效时间,我们可以安全地停止搜索B中的时间段并继续前进到A的下一个项目.
标签:python,algorithm,list