在 Python 中获取超出范围的索引的默认值

在 Python 中获取超出范围的索引的默认值

Get a default value on index out of range in Python

要获取索引超出范围异常的默认值:

  1. 访问块中指定索引处的列表try/except
  2. 如果引发列表索引超出范围异常,则返回默认值。
  3. 否则,返回指定索引处的列表项。
主程序
def get_item(li, index, default=None): try: return li[index] except IndexError: return default my_list = ['bobby', 'hadz', 'com'] print(get_item(my_list, 1)) # 👉️ hadz print(get_item(my_list, 25)) # 👉️ None print(get_item(my_list, 25, 'default value')) # 👉️ default value print(get_item(my_list, -1)) # 👉️ com print(get_item(my_list, -25)) # 👉️ None print(get_item(my_list, -25, 'default value')) # 👉️ default value

我们使用try/except块在“列表索引超出范围”异常时返回默认值。

我们访问try块中指定索引处的列表,如果索引超出范围,IndexError则引发 an 。

主程序
my_list = ['bobby', 'hadz', 'com'] # ⛔️ IndexError: list index out of range print(my_list[25])

我们通过返回默认值来处理块IndexError中的。except

默认值设置为,None除非用户在函数调用中提供第三个参数。
主程序
def get_item(li, index, default=None): try: return li[index] except IndexError: return default my_list = ['bobby', 'hadz', 'com'] print(get_item(my_list, 25)) # 👉️ None print(get_item(my_list, 25, 'default value')) # 👉️ default value

如果指定索引处在范围内,则该函数返回列表项,否则返回默认值。

这种方法还处理负索引。

主程序
def get_item(li, index, default=None): try: return li[index] except IndexError: return default my_list = ['bobby', 'hadz', 'com'] print(get_item(my_list, -1)) # 👉️ com print(get_item(my_list, -25)) # 👉️ None print(get_item(my_list, -25, 'default value')) # 👉️ default value
负索引可用于向后计数,例如my_list[-1] 返回列表中的最后一项并my_list[-2]返回倒数第二项。

或者,您可以检查列表的长度。

使用 len() 获取超出范围的索引的默认值

要获取索引超出范围异常的默认值:

  1. 检查提供的索引是否在范围内。
  2. 如果索引在范围内,则访问指定索引处的列表项。
  3. 否则,返回默认值。
主程序
def get_item(li, index, default=None): return li[index] if -len(li) <= index < len(li) else default my_list = ['bobby', 'hadz', 'com'] print(get_item(my_list, 1)) # 👉️ hadz print(get_item(my_list, 25)) # 👉️ None print(get_item(my_list, 25, 'default value')) # 👉️ default value print(get_item(my_list, -1)) # 👉️ com print(get_item(my_list, -25)) # 👉️ None print(get_item(my_list, -25, 'default value')) # 👉️ default value

我们使用内联if/else语句来检查指定的索引是否在范围内。

if语句首先检查列表的否定长度是否小于或等于索引。

这是处理负索引所必需的,例如my_list[-25].

如果列表的长度为3,则列表中最大的负索引为-3

换句话说,列表中最大的负索引等于 -len(my_list)

if语句还检查索引是否小于列表的长度。

Python 索引是从零开始的,因此列表中的第一项的索引为,最后一项的索引为 0-1 len(my_list) - 1

索引从零开始,因此列表中的最后一项的索引始终为len(my_list) - 1.

如果满足这两个条件,我们将访问指定索引处的列表项。

主程序
def get_item(li, index, default=None): return li[index] if -len(li) <= index < len(li) else default my_list = ['bobby', 'hadz', 'com'] print(get_item(my_list, 1)) # 👉️ hadz print(get_item(my_list, 25, 'default value')) # 👉️ default value print(get_item(my_list, -1)) # 👉️ com print(get_item(my_list, -25, 'default value')) # 👉️ default value

否则,我们返回一个默认值。

您选择哪种方法是个人喜好的问题。我会使用
try/except声明,因为我发现它更直接且更易于阅读。