在 Python 中返回第一个列表项或 None

Python 中要返回第一个列表项或None:

  1. 检查列表是否为空。
  2. 如果满足条件,则返回第一个列表项。
  3. 否则,返回 None。
my_list = ['www', 'zadmei', 'com']

first_or_none = my_list[0] if my_list else None
print(first_or_none)  # ?️ www

my_list = []

first_or_none = my_list[0] if my_list else None
print(first_or_none)  # ?️ None

我们使用了三元运算符,它与 if/else 语句非常相似。

if 条件检查列表是否真实。

空序列是假值,因此如果变量存储空列表或 None 值,则不满足条件。

my_list = ['www', 'zadmei', 'com']
print(bool(my_list))  # ?️ True

my_list = []
print(bool(my_list))  # ?️ False

如果列表不为空,我们返回第一个列表项。

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

如果列表为空或变量存储了虚假值,则运行 else 语句并返回 None

my_list = []

first_or_none = my_list[0] if my_list else None
print(first_or_none)  # ?️ None

或者,我们可以使用 next() 函数。

使用 next() 返回第一个列表项或 None

要返回第一个列表项或None:

  1. 将列表传递给 iter() 函数以创建迭代器。
  2. 将结果传递给 next() 函数以获取第一个列表项。
  3. 在对 next() 函数的调用中提供 None 的后备值。
my_list = ['www', 'zadmei', 'com']

first_or_none = next(iter(my_list or []), None)
print(first_or_none)  # ?️ 'www'

my_list = []

first_or_none = next(iter(my_list or []), None)
print(first_or_none)  # ?️ None

我们使用 iter() 函数创建了一个迭代器对象,因此我们可以调用 next() 函数。

next() 函数从迭代器返回下一项。

该函数可以传递一个默认值作为第二个参数。

如果迭代器耗尽或为空,则返回默认值。

如果迭代器已用尽或为空且未提供默认值,则会引发 StopIteration 异常。

我们使用 or 布尔运算符来涵盖变量存储 None 值的场景。

表达式 x 或 y 如果为真则返回左边的值,否则返回右边的值。

如果列表不为空,则 next() 函数返回第一个列表项。

如果列表为空,则 next() 函数返回 None。

选择哪种方法是个人喜好问题。 我会使用内联 if/else 语句,因为我发现它更直观且更易于阅读。