#python-3.x #list #set #combinations
Вопрос:
Как мне получить подмножество списка, чтобы комбинация определенной длины встречалась только один раз.
Например, для=[1, 1, 2, 3, 4, 4, 5, 5]
от a
я хочу получить что-то вроде:
[(1,2),[1,3,4,4,5,5]],[(1,2,3),[1,4,4,5,5],...
Я пробовал использовать комбинацию, но большинство результатов не имеют отношения к проблеме. Кто-нибудь может помочь?
Комментарии:
1. Я просто хочу подтвердить, что ожидаемый ответ будет таким же, если я поставлю 1 на ie
a = [1, 1, 2, 3, 4, 4, 5, 5, 1]
2. Привет, абсолютно не представляю, каков желаемый результат. не могли бы вы предоставить более подробную информацию?
Ответ №1:
информация, которую вы дали, скудна, но вот отрывок из того, что я понял
a=[1, 1, 2, 3, 4, 4, 5, 5] result=[] for i in range(1,7): b=a.copy() sub_tuple=[] for j in range(1,i): x=b.pop(b.index(j)) sub_tuple.append(x) result.append([tuple(sub_tuple), b]) print(result[2:]) gt;gt;gt; [[(1, 2), [1, 3, 4, 4, 5, 5]], [(1, 2, 3), [1, 4, 4, 5, 5]], [(1, 2, 3, 4), [1, 4, 5, 5]], [(1, 2, 3, 4, 5), [1, 4, 5]]]
Комментарии:
1. Спасибо вам за ваш ответ. На самом деле я думал об использовании комбинаций, чтобы получить эту структуру, но было так много значений, которые мне не требовались. Это определенно имеет смысл и отвечает моим требованиям.