Допустим, у меня есть список значенийPython - Новый список перестановок с бездействием
my_list = [1,2,3,4]
I пользователя itertools.permutations
найти все комбинации этого списка
perms = itertools.permutations(my_list)
который создает
[(1, 2, 3, 4),
(1, 2, 4, 3),
(1, 3, 2, 4),
(1, 3, 4, 2),
(1, 4, 2, 3),
(1, 4, 3, 2),
(2, 1, 3, 4),
(2, 1, 4, 3),
(2, 3, 1, 4),
(2, 3, 4, 1),
(2, 4, 1, 3),
(2, 4, 3, 1),
(3, 1, 2, 4),
(3, 1, 4, 2),
(3, 2, 1, 4),
(3, 2, 4, 1),
(3, 4, 1, 2),
(3, 4, 2, 1),
(4, 1, 2, 3),
(4, 1, 3, 2),
(4, 2, 1, 3),
(4, 2, 3, 1),
(4, 3, 1, 2),
(4, 3, 2, 1)]
Я начинаю повторять это и обнаруживаю, что мне больше не нужны какие-либо предметы в perms
, которые будут джин с (4,1...
или (3,1...
.
Как я могу воссоздать этот список с этими конкретными упущениями? Итерирование и удаление элементов нецелесообразно, поскольку для этого требуется масштабирование до очень больших размеров.
EDIT: Для разъяснения (4,1,2,3)
должны быть удалены, как он начинается с (4,1...)
, но не (4,2,1,3)
как она начинается с (4,2...)
.
Это неправильно. Я думаю, вы опускаете все кортежи, начиная с 3 и 4. – laike9m
@ laike9m Я думаю, что это то, что хочет OP, иначе это не имеет никакого значения, потому что рецепт важен! – Kasramvd
Что я ищу - это удаление чего-либо, начинающегося с '(3,1 ..)' или '(4,1 ...)'. Например. '(4,1,2,3)' следует удалить, но не '(4,2,1,3)' – RockJake28