Относительный питон/программирование новичок здесь. Я использую метод перестановок itertools, чтобы сузить полученные результаты с помощью инструкции «if», чтобы создать список, который мне нужен.Python - сужение результатов перестановки itertools с помощью операторов "if". Как с повторным элементом?
В моем коде ниже вы увидите, что я хочу вернуть суженный список из перестановок, в которых индексы запятых соответствуют индексам запятых перестановочного списка. Однако этот код работает только в том случае, если я вручную помещаю индексы в оператор «if». Поскольку я не буду знать заранее, сколько запятых будет в списке, я хочу перестановочить, как мне это кодировать?
from itertools import permutations
prp1 = ["UP", ",", "DOWN", "LEFT", ",", "RIGHT"]
# grab indices for commas in 'prp1' list
comma_indices = []
for index, p in enumerate(prp1):
if p == ",":
commas.append(index)
perms = permutations(prp1)
lst = []
for perm in perms:
# Presently I have manually inserted the indices of commas,
# but how to do this non-manual for unknown amount of commas here?
if perm[1] == ',' and perm[4] == ',':
lst.append(perm)
for l in lst:
print l
Я думаю о делать что-то вроде этого:
for perm in perms:
for comma in commas:
if...........
..но тогда я только доступ к 1 запятая в то время.
Любая помощь очень ценится, Даррен
EDIT:
Некоторые больше примеров списков, которые должны быть перестановкой:
prp2 = ['down', ',', 'up', 'left', 'down']
prp3 = ['down', 'down', ',', 'up', ',', 'left', ',', 'right', ',', 'left']
Благодарим Вас за отличный ответ :-) Создание только перестановок, которые я хотел в первую очередь, было в глубине моего сознания, но я даже не знал, как начать приближаться к этому! –