Python 在一个列表中找到所有非的最简单的方法是什么?
有没有比这段代码更好的Pythonic方法来查找列表中的所有nonePython 在一个列表中找到所有非的最简单的方法是什么?,python,Python,有没有比这段代码更好的Pythonic方法来查找列表中的所有none def find_nones_locations(lst): none_locations = [] for i in range(len(lst)): for j in range(len(lst)): if lst[i][j] is None: none_locati
def find_nones_locations(lst):
none_locations = []
for i in range(len(lst)):
for j in range(len(lst)):
if lst[i][j] is None:
none_locations.append((i,j))
return none_locations
您可以使用列表理解一次性完成,但我不确定它是否一定比清晰的循环更好:
none_locations = [(i, j) for i, row in enumerate(lst) for j, elem in enumerate(row) if elem is None]
理解中的嵌套循环遵循与普通代码中相同的顺序。没有理由不使用普通循环:
none_locations = []
for i, row in enumerate(lst):
for j, elem in enumerate(row):
if elem is None:
none_locations.append((i, j))
对代码的唯一潜在改进是使用生成器。任何时候你都需要一个iterable的索引和值,这通常是获得它的python方法。你可以使用
enumerate
稍微清理一下代码:
def find_nones_locations(lst):
none_locations = []
for i, sublst in enumerate(lst):
for j, item in enumerate(sublist):
if item is None:
none_locations.append((i,j))
return none_locations
为什么要选中
(i,j)
?不需要,我编辑了代码而不是范围
使用枚举
。i、 e.用于枚举(lst)中的i、val:
。