#python #arrays #split
Вопрос:
Я ищу какое-то решение и встречаю ответы только от массивов, разделенных на два, на основе суммы элементов результирующих массивов или их размера, равного или отличающегося. Но мне кажется, что ничего недостаточно, чтобы помочь мне.
Допустим, у меня есть массив, как показано ниже:
array = [1,2,3]
Я хотел бы найти все способы разделить элементы этого массива на два новых массива, независимо от того, равны они по размеру или различны, то есть:
[1] -- [2,3]
[2] -- [1.3]
[3] -- [1,2]
[2,3] -- [1]
[1,3] -- [2]
[1,2] -- [3]
Я пытаюсь сделать это на Python и, как я уже сказал, не нашел способа сделать это, хотя знаю itertools
и powerset
.
На самом деле я хотел бы распечатать выходные данные в файле, содержащем каждую пару массивов рядом.
Ответ №1:
Вы могли бы написать функцию:
from copy import deepcopy
from itertools import combinations
array = [1,2,3,4,5,6,7,8,9,10,11,12,13]
for i in range(1, len(array) 1):
lst = deepcopy(array)
nlst1 = list(combinations(lst, i))
nlst1 = [list(i) for i in nlst1]
nlst2 = []
for j in nlst1:
lst = deepcopy(array)
for k in j:
lst.remove(k)
nlst2.append(lst)
for i in range(len(nlst1)):
print(nlst1[i], nlst2[i])
Комментарии:
1. Любопытно, как вы используете это, чтобы получить «все возможные формы», особенно учитывая, что вы уничтожили список входных данных?
2. @CoderTang Я вижу, что, запрашивая показ в конце файла, как вы, я могу получить шесть способов, но это было бы не очень практично, если мой исходный массив содержит тысячи элементов, даже если я пытаюсь адаптировать ваш код.
3. @CoderTang, теперь я понимаю
IndexError: pop index out of range
.4. @7beggars_nnnnm Я немного обновил его. не уверен, что это поможет
5. @7beggars_nnnnm забыл добавить немного кода