#python #combinations #permutation #itertools
#питон #комбинации #перестановка #итерационные инструменты
Вопрос:
Я хочу переставить массив, где r=3. Все три позиции имеют некоторые фиксированные позиции. Правило положения идет:
(arr[:3], arr[:3], arr[:7])
другое правило: один элемент встречается только один раз. (1,2,2) неприемлемо. Полученные три элемента должны быть уникальными.
текущее псевдо — это что-то вроде:
result = []
for h1 in arr[:3]:
for h2 in arr[:3]:
if h1 == h2:
continue
for h3 in arr[:7]:
if h1 == h3 or h2 == h3:
continue
result.append([h1,h2,h3])
Это означает, что, во-первых, могут быть только элементы в диапазоне от индекса 0 до 2. Вторая позиция также имеет то же самое, а третья позиция будет содержать элементы в диапазоне от 0 до 6.
Я хочу делать комбинации также по тому же правилу.
Я написал пользовательскую функцию, которая генерирует его идеально. Мне просто было интересно, есть ли какая-нибудь удобная функция itertools, которая выполняет эту работу. Есть ли они вообще?
Комментарии:
1. Похоже, вы ищете декартово произведение.
Ответ №1:
Вы можете использовать itertools.product
import itertools
for ele in itertools.product(arr[:3], arr[:3], arr[:7]):
print(ele)
Комментарии:
1. Ваш ответ верен, но я сожалею, что некоторая информация была упущена. Я сожалею об этом. Я обновил вопрос. Пожалуйста, взгляните.