在 Python 中安全地获取列表项

在 Python 中安全地获取列表项

Safely get list items in Python

要安全地获取列表项:

  1. try/except访问语句中的列表项。
  2. 如果IndexError引发 an,则返回默认值。
  3. 如果未引发错误,则返回指定索引处的列表项的值。
主程序
def safe_list_get(li, index, default_value=None): try: return li[index] except IndexError: return default_value my_list = ['bobby', 'hadz', 'com'] print(safe_list_get(my_list, 0)) # 👉️ bobby print(safe_list_get(my_list, 10)) # 👉️ None print(safe_list_get(my_list, 10, 'default')) # 👉️ default print(safe_list_get(my_list, -3)) # 👉️ bobby print(safe_list_get(my_list, -10)) # 👉️ None print(safe_list_get(my_list, -10, 'default')) # 👉️ default

我们创建了一个可重用的函数,它接受一个列表、一个索引和一个可选的默认值。

try语句中,我们尝试访问指定索引处的列表元素。

如果索引存在,则返回该项目。

如果索引不存在,IndexError则引发 an 然后在
except块中处理。

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

如果索引超出范围,我们返回默认值。

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

这种方法也可用于使用负索引安全地访问列表元素。

主程序
def safe_list_get(li, index, default_value=None): try: return li[index] except IndexError: return default_value my_list = ['bobby', 'hadz', 'com'] print(safe_list_get(my_list, -3)) # 👉️ bobby print(safe_list_get(my_list, -10)) # 👉️ None print(safe_list_get(my_list, -10, 'default')) # 👉️ default

负索引可用于向后计数,例如my_list[-1]返回列表中的最后一项并my_list[-2]返回倒数第二项。

或者,您可以在访问列表项之前检查列表的长度。

使用 len() 安全地获取列表项

要安全地获取列表项:

  1. 检查提供的索引是否存在。
  2. 如果索引存在,则访问索引处的列表。
  3. 如果索引不存在,则返回默认值。
主程序
def safe_list_get(li, index, default_value=None): return li[index] if -len(li) <= index < len(li) else default_value my_list = ['bobby', 'hadz', 'com'] print(safe_list_get(my_list, 0)) # 👉️ bobby print(safe_list_get(my_list, 10)) # 👉️ None print(safe_list_get(my_list, 10, 'default')) # 👉️ default print(safe_list_get(my_list, -3)) # 👉️ bobby print(safe_list_get(my_list, -10)) # 👉️ None print(safe_list_get(my_list, -10, 'default')) # 👉️ default

我们if/else在函数中使用了内联语句。

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

这对于处理负指数是必要的,例如-5.

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

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

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

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

列表中的最后一项的索引始终为len(my_list) - 1,因此如果索引小于列表的长度,我们应该只在索引处访问列表。

如果满足条件,则返回指定索引处的列表项,否则返回默认值。

您选择哪种方法是个人喜好的问题。我会使用
try/except语句,因为我发现它很容易阅读且直观。

发表评论