Я создал следующее:
from itertools import product
x = [(b0, b1, b2, b3) for b0, b1, b2, b3 in product(range(5), repeat=4)]
При этом создаются все кортежи от [0,0,0,0]
до [4,4,4,4]
.
Я бы хотел включить в качестве условия только те кортежи, которые не имеют одинаковое число, повторенное более 2 раз. Поэтому я хотел бы игнорировать такие кортежи, как [2,2,2,1]
или [3,3,3,3]
, сохраняя такие кортежи, как [0,0,1,2]
или [1,3,4,2]
Я попробовал следующее, и я думаю, что это нормально, но это кажется довольно громоздким.
y = [(b0, b1, b2, b3) for b0, b1, b2, b3 in product(range(5), repeat=4) if (b0, b1, b2, b3).count(0)<=2 and (b0, b1, b2, b3).count(1)<=2 and (b0, b1, b2, b3).count(2)<=2 and (b0, b1, b2, b3).count(3)<=2 and (b0, b1, b2, b3).count(4)<=2]
Возможно, способ подсчитать каждый из элементов из [0,1,2,3,4]
и взять их максимум и заявить, что максимум <= 2. </p>
Как можно включить в понимание списка условие подсчета?