+-
                                
                                    
                                
                                
                                    
                                
                                
                                    
                                        
                                        
                                        
                                        
                                        
                                            
                                        
                                        
                                    
                                
                            
                        
  假设我得到了: 
  
  
 
 
first_var = 1
second_var = 5
interval = 2
 
 我想要second_var的间隔,如second_var±interval(从3到7).
我想知道first_var是否在那段时间内.
所以在这种特殊情况下我想要假
如果first_var = 4,我想要True
我可以做这个:
if (first_var > second_var-interval) and (first_var < second_var+interval):
  #True
 
 是否有更多的pythonic方式来做到这一点?
  最佳答案 
 
  我使用一个带有 
 
    
__contains__的类来表示间隔: 
  
  
 class Interval(object):
    def __init__(self, middle, deviation):
        self.lower = middle - abs(deviation)
        self.upper = middle + abs(deviation)
    def __contains__(self, item):
        return self.lower <= item <= self.upper
 
 然后我定义一个函数间隔来简化语法:
def interval(middle, deviation):
    return Interval(middle, deviation)
 
 然后我们可以这样称呼它:
>>> 8 in interval(middle=6, deviation=2)
True
>>> 8 in interval(middle=6, deviation=1)
False
 
 使用Python 2,这个解决方案比使用range或xrange更有效,因为它们没有实现__contains__,并且它们必须搜索匹配的值.
Python 3更智能,range是一个生成对象,它像xrange一样高效,但也实现__contains__,因此它不必搜索有效值. Python 3中不存在xrange.
此解决方案也适用于浮动.
另外,请注意,如果使用范围,则需要注意1分之一的错误.最好将其封装起来,如果你要做的不止一次或两次.
  点击查看更多相关文章 
 
转载注明原文:python – 如何检查数字是否在一个区间内 - 乐贴网