所以我发布了一个问题before,但是它过于简化了,正确地被标记为重复.我现在将更详细地发布我的问题,以便希望可以解决我的问题.简而言之如下:
我有两个列表:a = [10.0,20.0,25.0,40.0]和b = [1.0,10.0,15.0,20.0,30.0,100.0]
使用列表推导,我想从b中排除a中指定的元素范围.也就是说:从b中删除10.0和20.0之间以及25.0和40.0之间的所有元素.这是我尝试过的:
kk = 0
while kk < len(a):
up_lim = a[kk] #upper limit
dwn_lim = a[kk+1] #lower limit
x = [b[y] for y in range(len(b)) if (b[y]up_lim)] #This line produces correct result if done outside of a while loop. Somehow fails in while loop.
b = list(x) #update the old list with the new&reduced list
kk += 2 #update counter
我期望结果x = [1.0,100.0],但我得到x = [1.0,10.0,15.0,20.0,30.0,100.0]
实际上,如果我在while循环之外进行操作,则具有列表理解的关键行会起作用(当然,这是没有用的,因为列表’a’的大小可能是任意的,这就是我使用while循环的原因).
所以问题是:while循环如何以及为什么阻止列表理解正确发生?