Как вывести неповторяющиеся пары в массиве?
Мне нужно вывести все пары чисел, делящиеся на 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}')
