0

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

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]
4

3 回答 3

2

IndexError为什么不尝试访问该值,如果超出范围,您将得到一个。您想要做的任何与众不同的检查,只需事先手动进行即可。

def get_current_settings(self, slot):
    if slot < 0:
        raise IndexError(...)
    return self.my_list[slot]
于 2013-03-27T18:54:01.560 回答
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]
于 2013-03-27T19:07:44.983 回答
0

我会用这个替换你的 if 行:

  if slot not in range(len(self.my_list)):
于 2013-03-27T18:59:44.840 回答