У меня есть массив необязательных массивов одинакового размера, который я хочу объединить следующим образом.
Каждый вложенный массив сканируется в том порядке, в котором они появляются в основном массиве. Сканируемый элемент объединяется с последним элементом каждого массива перед текущим и первым элементом каждого массива после текущего.
Пример:
На практике all_arrays представляет собой список, вложенный массив представляет собой пустой массив, и каждая комбинация должна представлять собой кортеж длиной = 3. Моя текущая реализация выглядит так:
combinations = []
for ii in range(len(all_arrays)):
while len(all_arrays[ii]) > 1:
combinations.append(next(zip(*all_arrays)))
all_arrays[ii] = all_arrays[ii][1:]
combinations.append(next(zip(*all_arrays)))
Это работает нормально, но у меня возникло бы два вопроса:
Есть ли у такой комбинации имя? Я спрашиваю не только о моих личных знаниях, но и потому, что, если у него есть имя, вероятно, уже существует какой-то алгоритм, который реализовал его быстрее, чем я.
Даже если у него нет имени, видите ли вы лучший способ его реализации (возможно, даже с использованием другого типа данных)?
У меня есть массив необязательных массивов одинакового размера, который я хочу объединить следующим образом. Каждый вложенный массив сканируется в том порядке, в котором они появляются в основном массиве. Сканируемый элемент объединяется с последним элементом каждого массива перед текущим и первым элементом каждого массива после текущего. Пример: [code]all_arrays = [[1.1, 1.05], [2.1, 2.05, 2], [3.1, 3.05]] [/code] Будет объединено следующим образом: [code][ [1.1, 2.1, 3.1], [1.05, 2.1, 3.1], [1.05, 2.05, 3.1], [1.05, 2, 3.1], [1.05, 2, 3.05] ] [/code] На практике all_arrays представляет собой список, вложенный массив представляет собой пустой массив, и каждая комбинация должна представлять собой кортеж длиной = 3. Моя текущая реализация выглядит так: [code]combinations = [] for ii in range(len(all_arrays)): while len(all_arrays[ii]) > 1: combinations.append(next(zip(*all_arrays))) all_arrays[ii] = all_arrays[ii][1:] combinations.append(next(zip(*all_arrays))) [/code] Это работает нормально, но у меня возникло бы два вопроса: [list] [*]Есть ли у такой комбинации имя? Я спрашиваю не только о моих личных знаниях, но и потому, что, если у него есть имя, вероятно, уже существует какой-то алгоритм, который реализовал его быстрее, чем я. [*]Даже если у него нет имени, видите ли вы лучший способ его реализации (возможно, даже с использованием другого типа данных)? [/list]