列表边界 - 什么是最Pythonic方式?

时间:2013-03-27 18:52:35

标签: python

我有一个Python列表,我想检查一个给定的索引是否超出范围。由于我接受用户输入,我想将索引限制为大于或等于0的整数。最恐怖的方法是什么?目前,这是我的解决方案:

def get_current_setting(self, slot):
    if slot < 0 or slot > len(self.current_settings) - 1:
        raise Exception("Error message...")
    return self.current_settings[slot]

3 个答案:

答案 0 :(得分:2)

为什么不尝试访问该值,如果超出范围,您将获得IndexError。你想要做的任何不寻常的检查,只需手动做那些。

def get_current_settings(self, slot):
    if slot < 0:
        raise IndexError(...)
    return self.my_list[slot]

答案 1 :(得分:1)

在Python中,您可以同时执行两项检查(下限和上限),使if条件更具可读性:

def get_current_setting(self, slot):
    if not 0 <= slot < len(self.current_settings):
        raise Exception("Error message...")
    return self.current_settings[slot]

答案 2 :(得分:0)

我用这个替换你的if行:

  if slot not in range(len(self.my_list)):