在 Python 中查找列表中的第一个非零元素

在 Python 中查找列表中的第一个非零元素

Find the first non-zero element in a List in Python

查找列表中的第一个非零元素:

  1. 使用生成器表达式迭代列表enumerate()
  2. 检查每一项是否不等于零。
  3. 返回第一个满足条件的元素。
主程序
my_list = [0, 0, 0, 5] # ✅ Find the index of the first non-zero element in a list index_first_match = next( (index for index, item in enumerate(my_list) if item != 0), None ) print(index_first_match) # 👉️ 3 # ----------------------------------------------- # ✅ Get the value of the first non-zero element in a list value_first_match = next( (item for item in my_list if item != 0), None ) print(value_first_match) # 👉️ 5

第一个示例查找列表中第一个非零元素的索引。

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

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

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

在每次迭代中,我们检查当前项目是否不等于0并返回结果。

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

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

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

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

我们使用默认值None,因此如果列表中的项目都不符合条件,None则返回。

主程序
my_list = [0, 0, 0] index_first_match = next( (index for index, item in enumerate(my_list) if item != 0), None ) print(index_first_match) # 👉️ None

如果您需要获取列表中的第一个非零值,您可以使用相同的方法。

主程序
my_list = [0, 0, 0, 5] value_first_match = next( (item for item in my_list if item != 0), None ) print(value_first_match) # 👉️ 5

我们不返回索引,而是简单地返回满足条件的项目。

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

使用 for 循环查找列表中的第一个非零元素

查找列表中的第一个非零元素:

  1. 使用for循环遍历列表enumerate()
  2. 检查每一项是否不等于0
  3. 如果满足条件,则将索引和值分配给变量。
主程序
my_list = [0, 0, 0, 5] index_first_match = None value_first_match = None for index, item in enumerate(my_list): if item != 0: index_first_match = index value_first_match = item break print(index_first_match) # 👉️ 3 print(value_first_match) # 👉️ 5

我们使用for循环来迭代enumerate对象。

在每次迭代中,我们检查当前项目是否不等于0

如果满足条件,我们将当前索引和值分配给变量并退出for循环。

break
语句跳出最内层的封闭

for循环while