在 Python 中查找列表中的第一个非空字符串

在 Python 中查找列表中的第一个非空字符串

Find the first non-empty string in a List in Python

要在列表中查找第一个非空字符串:

  1. 使用生成器表达式迭代列表。
  2. 检查列表中的每个字符串是否不为空。
  3. 使用该next()函数返回第一个匹配的字符串。
主程序
my_list = ['', '', 'bobby', 'hadz', 'com'] # ✅ find the first non-empty string in a list first_value = next( (string for string in my_list if string), None ) print(first_value) # 👉️ bobby # --------------------------------------------- # ✅ find the index of the first non-empty string in a list first_index = next( (index for index, string in enumerate(my_list) if string), None ) print(first_index) # 👉️ 2

我们使用生成器表达式来遍历列表。

生成器表达式用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们检查项目是否存储真值并返回结果。

空字符串是虚假值,因此它们不满足条件。

我们使用该next()函数获取列表中的第一个非空字符串。

主程序
my_list = ['', '', 'bobby', 'hadz', 'com'] first_value = next( (string for string in my_list if string), None ) print(first_value) # 👉️ bobby

next()函数从提供的迭代器返回下一个项目。

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

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

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

我们指定了默认值None,因此如果列表仅包含空字符串或为空,None则返回一个值。

主程序
my_list = ['', ''] first_value = next( (string for string in my_list if string), None ) print(first_value) # 👉️ None

如果需要获取列表中第一个非空字符串的索引,可以使用相同的方法。

主程序
my_list = ['', '', 'bobby', 'hadz', 'com'] first_index = next( (index for index, string in enumerate(my_list) if string), None ) print(first_index) # 👉️ 2

我们使用该enumerate()函数来访问当前迭代的索引。

enumerate函数接受一个可迭代对象并返回一个包含元组的
枚举对象,其中第一个元素是索引,第二个元素是相应的项目。

主程序
my_list = ['bobby', 'hadz', 'com'] for index, item in enumerate(my_list): print(index, item) # 👉️ 0 bobby, 1 hadz, 2 com

我们不返回项目,而是简单地返回索引。

或者,您可以使用简单的for循环。

使用 for 循环查找列表中的第一个非空字符串#

要在列表中查找第一个非空字符串:

  1. 使用for循环遍历列表。
  2. 检查每个字符串是否不为空。
  3. 如果满足条件,则将项目分配给变量。
主程序
my_list = ['', '', 'bobby', 'hadz', 'com'] first_value = None for item in my_list: if item: first_value = item break print(first_value) # 👉️ bobby

我们使用for循环遍历列表。

在每次迭代中,我们检查当前项是否存储真值。

如果满足条件,我们将值赋给一个变量并退出for
循环。

break
语句跳出最内层的封闭

for循环while

enumerate()如果需要查找列表中第一个非空字符串的索引,则可以使用该函数。

主程序
my_list = ['', '', 'bobby', 'hadz', 'com'] first_value = None first_index = None for index, item in enumerate(my_list): if item: first_value = item first_index = index break print(first_value) # 👉️ bobby print(first_index) # 👉️ 2