Выполнение команды, когда список равен одной строке матрицы в python - PullRequest
1 голос
/ 29 мая 2020

Если все 3 значения в списке ниже равны любому из 3 значений в одной строке матрицы, я хочу, чтобы он напечатал 'hello'.

#if x is equal to the 1st line of the matrix I want it to print hello. If x is equal to the 2nd part and not the 1st I still want it to print the same string.

x = [1, 2, 3]
y = [
    [1, 2, 3],
    [4, 5, 6],
    [3, 4, 5],
    [7, 8, 9]
]
if x == (y):
    print('hello')

Как показано выше, значение списка x равно одной из строк в матрице, но оно не печатает hello. Как мне заставить программу это делать?

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Сравнение, которое вы проводите - x == (y) не удается, потому что (y) оценивается как y, а x == y является ложным (поскольку y является вложенным списком).

Что вы хочу сделать, это перебрать строки:

x = [1,2,3]
y = [
    [1, 2, 3],
    [4, 5, 6],
    [3, 4, 5],
    [7, 8, 9]
]

for yi in y:
    if x == yi:
        print("Hello")

Для данного ввода это печатает Hello один раз. Если [1,2,3] появляется несколько раз, он печатает Hello каждый раз, когда находит его.

Обратите внимание, что это предполагает, что [1,2,3] != [3,2,1] (что предполагает Python внутренне). Если порядок не имеет значения, его нужно настроить.

0 голосов
/ 29 мая 2020

Существует встроенная функция для этого вида тестирования, называемая any, которая проверяет, является ли какое-либо из значений последовательности True. У нас пока нет нужных нам истинных или ложных значений, поэтому нам нужно их создать. Стратегия состоит в том, чтобы преобразовать значение in в список y в истинное значение, которое указывает, равно ли это значение x. Мы можем сделать это элегантно с помощью выражения генератора:

any(row == x for row in y)

Это означает именно то, на что это похоже: если any из row значений равно == x, считается for row значения in y.

0 голосов
/ 29 мая 2020

Ну, в обычном случае вы можете просто использовать -

if x in y:
    print('hello')

Если вы хотите проверить свои единственные значения в любом порядке, вам нужно сначала отсортировать, как показано ниже.

x = [1, 2, 3]
y = [
[1, 3, 2],
[4, 5, 6],
[3, 4, 5],
[7, 8, 9]
]
x = sorted(x)
for i in range(len(y)):
    y[i] = sorted(y[i])
if x in y:
    print('hello')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...