Эффективный двойной цикл

Каков наиболее эффективный (или Pythonic способ) выполнить двойной цикл for, как показано ниже (я знаю, как сделать это для понимания списка, но не для одного возвращаемого объекта):

for i in range(0, 9):
    for j in range(0, 9):
        if self.get(i)[j] == "1":
            return (i, j)

1 ответ

Решение
>>> next(((i, j)
           for i in range(0, 9)
           for j in range(0, 9)
           if self.get(i)[j] == "1"), None)

Это вернется None если ничего не найдено

Смотрите документацию для next,

Первый параметр - это генератор. Вам это нужно, если вы поставляете None как второй параметр. В противном случае вы можете пропустить лишние скобки. Если вы не поставляете None хотя это бросит StopIteration исключение, если ничего не найдено.

Другие вопросы по тегам