Ваш код добавляет значение в y
, когда ваша пара в два раза превышает это значение.Так что y
будет списком значений по отношению к себе.Кроме того, вы добавляете значение в a
, если его еще нет.Таким образом, a
является (предполагается) [1] списком всех значений в отношении r
.Наконец, вы решаете, что ваше отношение рефлексивно, если все значения (список a
) связаны между собой (список y
).
[1] Кажется, есть небольшая ошибка в том, что если значениеприсутствует только справа (a2
), вы не будете помещать его в a
, как если бы он был слева (a1
).Поэтому отношение r=[(1, 1), (1, 2)]
будет считаться рефлексивным в вашем случае.Чтобы исправить это, вы можете добавить:
if a2 not in a:
a.append(a2)
Поскольку при окончательном тестировании ваши списки y
и a
преобразуются в наборы, вы, вероятно, можете отказаться от теста перед вставкой в a
.Вы также можете использовать наборы с самого начала вместо создания списков и преобразования их в наборы.