Если у меня есть изображение шириной x высотой пикселей, я хотел бы написать функцию, которая возвращает список наборов (ширина, высота) с возможными способами переупорядочения этих пикселей.
Если изображение, например, имеет размер 87 * 87 пикселей, я могу указать ширину и высоту, чтобы получить список простых чисел:
[3, 3, 29, 29]
Теперь я хотел бы написать функцию, которая организует эти простые числа всеми возможными способами в группы по 2, чтобы получить что-то вроде:
[(3, 3 * 29 * 29),
(29,3 * 3 * 29),
(3 * 3, 29 * 29),
(29 * 29, 3 * 3),
(3 * 29, 3 * 29),
(3 * 3 * 29, 29),
(3 * 29 * 29, 3)]
Я оставил простые числа без умножения для ясности. Теперь я сделал это вручную, но я бы предпочел сделать функцию. И я не нашел простого способа сделать это в Python, даже с помощью itertools.
Например, это печатает комбинации 3 из списка l:
l = [3, 3, 29, 29]
for t in itertools.groupby(itertools.combinations(l, 3)):
print(t[0])
Но в действительности это не говорит о том, что является четвертым элементом, который не учитывается в каждой комбинации.
Есть ли у кого-нибудь хороший способ вычислить все возможные 2-кортежи из списка простых чисел. Все простые числа должны использоваться в каждом кортеже по обе стороны от запятой. Желательно без дубликатов (это то, что для groupby в моем примере).