Как вывести неповторяющиеся пары в массиве?

Мне нужно вывести все пары чисел, делящиеся на 54 без остатка. Вот мой код:

size = int(input("Введите количество натуральных чисел: "))
    
    numbers = []
    
    for i in range(size):
        tmp = int(input(str(i+1) + ": "))
        numbers.append(tmp)
    
    input("Нажмите на enter!")
    
    couples = []
    
    a = 0
    b = 0
   for el in range(len(numbers)):
        for j in range(len(numbers)):
            if ((numbers[el] * numbers[j]) % 54 == 0 and el != j):
                a = str(numbers[el]) + " " + ": " + str(numbers[j])
                couples.append(a)
    
    for p in range(len(couples)):
        for q in range(len(couples)):
            if (str(couples[p]) != str(couples[q])):
                print(couples[p])
                break

Вывод:

введите сюда описание изображения

Проблема заключается в том, что некоторые пары по смыслу повторяются, например, 1:54 и 54:1. Как мне вывести только уникальные пары?


Ответы (2 шт):

Автор решения: Danis

Не надо итерировать по значения которые были т.е. второй цикл надо сделать таким:

for j in range(i + 1, len(numbers)):

Ваш код с некоторыми изменениями

size = int(input("Введите количество натуральных чисел: "))

numbers = []

for i in range(size):
    numbers.append(int(input(f"{i + 1}: ")))

input("Нажмите на enter!")

couples = []

for i in range(len(numbers)):
    for j in range(i + 1, len(numbers)):
        if (numbers[i] * numbers[j]) % 54 == 0:
            couples.append(f"{numbers[i]} : {numbers[j]}")

for i in range(len(couples)):
    print(couples[i])

результат

Введите количество натуральных чисел: 5
1: 1
2: 2
3: 3
4: 4
5: 54
Нажмите на enter!
1 : 54
2 : 54
3 : 54
4 : 54
→ Ссылка
Автор решения: Stanislav Volodarskiy

itertools.combinations(numbers, 2) перебирает неупорядченные пары:

import itertools

size = int(input("Введите количество натуральных чисел: "))
    
numbers = [int(input(f'{i}: ')) for i in range(1, size + 1)]
    
input('Нажмите на enter!')
    
for a, b in itertools.combinations(numbers, 2):
    if a * b % 54 == 0:
        print(f'{a} : {b}')
→ Ссылка