Произведение координат с определенным порядком итерации - PullRequest
0 голосов
/ 24 мая 2019

Вот фрагмент с регулярным использованием itertools.product:

from itertools import product

arr = [1,2,3]
pairs = list(product(arr, arr))

# pairs = [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

Теперь я хотел бы получить эти точки в порядке, который может быть достигнут путем сортировки полученных кортежей следующим образом:

sorted(pairs, key=lambda y:max(y))
# [(1, 1), (1, 2), (2, 1), (2, 2), (1, 3), (2, 3), (3, 1), (3, 2), (3, 3)]

Можно ли мне ввести эти числа в itertools.product, чтобы получить кортежи в этом порядке, или мне нужно отсортировать пары после итерации по результатам itertools.product?

1 Ответ

0 голосов
/ 24 мая 2019

Вероятно, вы можете использовать свой собственный модифицированный подход для достижения этого за один раз.

sorted([(x, y) for x in [1, 2, 3] for y in [1, 2, 3]], key=lambda y:max(y))

ВЫХОД

[(1, 1), (1, 2), (2, 1), (2, 2),(1, 3), (2, 3), (3, 1), (3, 2), (3, 3)]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...