首页 > 解决方案 > 一个带有条件的 for 循环 - 试图使它成为一个内衬

问题描述

for row,col in targets:
    if (board[row][col] == -1 and ((col != 0 and board[row][col - 1] != -1) or (col != len(board) - 1 and board[row][col + 1] != -1) or (row != 0 and board[row - 1][col] != -1) or (row != len(board) - 1 and board[row + 1][col] != -1))): return 1000
return min(penalty)

我试图使它成为一个班轮,但这样做:

return [min(penalty), 1000][True in[(board[row][col] == -1 and ((col != 0 and board[row][col - 1] != -1) or (col != len(board) - 1 and board[row][col + 1] != -1) or (row != 0 and board[row - 1][col] != -1) or (row != len(board) - 1 and board[row + 1][col] != -1)) for row,col in targets)]]

但它不是一回事。

标签: python

解决方案


你可以试试这个:

return 1000 if any(condition(r, c) for r, c in targets) else min(penalty)

这里,condition()是你长期的内在状态。

但这将更难阅读,并且不会比您已经拥有的更快。


推荐阅读