Как проверить, выполняется ли условие хотя бы один раз в Python? - PullRequest
0 голосов
/ 11 марта 2020

Допустим, у меня есть несколько списков. Если число 1 появится хотя бы один раз, я хочу вернуть его как True. Если нет ни одного случая появления 1, то это Ложь. Допустим, у меня есть несколько списков.

[2.0,2.0]
[1.0, 1.0, 2.0, 2.0]
[1.0, 2.0]
[3.0, 1.0]
[3.0, 3.0, 1.0, 1.0]
[3.0, 3.0, 3.0, 3.0]

Вывод будет:

False
True
True
True
True
False

Как я могу выполнить sh это?

РЕДАКТИРОВАТЬ: Код пример

def is_walkable(i,j,current_board):
    # find all the diagonal neighbours of (i,j) that are on board and put them into a list
    diagonal_neighbors = [(i+1,j-1),(i+1,j+1),(i-1,j-1),(i-1,j+1)]
    # loop over the list of neighbours to see if any of them is empty 
    neighbor_values = []
    for neighbor in diagonal_neighbors:
        row = neighbor[0]
        col = neighbor[1]
    # if there is an empty neighbour, return True, otherwise return False
        if on_board(row,col,current_board):
            neighbor_values.append(current_board[row,col])
        for neighbor in neighbor_values:
            if any(neighbor_values) == 1:
                return True
            else:
                return False

и код тестирования:

current_board = initial_board(empty_board)
print(is_walkable(0,1,current_board) == False)
print(is_walkable(2,1,current_board) == True)
print(is_walkable(2,7,current_board) == True)
print(is_walkable(5,0,current_board) == True)
print(is_walkable(5,6,current_board) == True)
print(is_walkable(6,1,current_board) == False)

Все выходы должны быть "True". Это для игры в шашки на доске 8х8.

1 Ответ

0 голосов
/ 11 марта 2020

Я думаю, что это то, что вам нужно:

xss = [
    [2.0, 2.0],
    [1.0, 1.0, 2.0, 2.0],
    [1.0, 2.0],
    [3.0, 1.0],
    [3.0, 3.0, 1.0, 1.0],
    [3.0, 3.0, 3.0, 3.0],
]

print(any(1.0 in xs for xs in xss))

any заставит генератор 1.0 in xs for xs in xss продолжать проверять списки в xss, пока один из них не будет содержать 1.0 с 1.0 in xs .

Ознакомьтесь с документацией по any, а также с генераторами и понятиями, если вы хотите полностью понять решение, но я думаю, что решение простое и понятное само по себе.

Если вы просто нужен список логических значений для списков:

has_one_xss = [1.0 in xs for xs in xss]

print(has_one_xss)

Печать:

[False, True, True, True, True, False]
...