Реализация частного случая комбинацииPython

Программы на Python
Ответить
Anonymous
 Реализация частного случая комбинации

Сообщение Anonymous »

У меня есть массив необязательных массивов одинакового размера, который я хочу объединить следующим образом.
Каждый вложенный массив сканируется в том порядке, в котором они появляются в основном массиве. Сканируемый элемент объединяется с последним элементом каждого массива перед текущим и первым элементом каждого массива после текущего.
Пример:

Код: Выделить всё

all_arrays = [[1.1, 1.05], [2.1, 2.05, 2], [3.1, 3.05]]
Будет объединено следующим образом:

Код: Выделить всё

[
[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]
]
На практике 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)))
Это работает нормально, но у меня возникло бы два вопроса:
  • Есть ли у такой комбинации имя? Я спрашиваю не только о моих личных знаниях, но и потому, что, если у него есть имя, вероятно, уже существует какой-то алгоритм, который реализовал его быстрее, чем я.
  • Даже если у него нет имени, видите ли вы лучший способ его реализации (возможно, даже с использованием другого типа данных)?


Подробнее здесь: https://stackoverflow.com/questions/798 ... ombination
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»