在 Python 中查找列表中的第一个非零元素
Find the first non-zero element in a List in Python
查找列表中的第一个非零元素:
- 使用生成器表达式迭代列表
enumerate()
。 - 检查每一项是否不等于零。
- 返回第一个满足条件的元素。
主程序
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 循环查找列表中的第一个非零元素
查找列表中的第一个非零元素:
- 使用
for
循环遍历列表enumerate()
。 - 检查每一项是否不等于
0
。 - 如果满足条件,则将索引和值分配给变量。
主程序
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
。