簡體   English   中英

在列表列表中查找所有無的最 Pythonic 方法是什么?

[英]What is the most Pythonic way to find all Nones in a list of lists?

有沒有比這段代碼更好的 Pythonic 方法來查找列表列表中的所有無?

    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))

對代碼的唯一潛在改進是使用enumerate生成器。 任何時候你需要一個可迭代對象的索引和值,這通常是獲取它的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM