По существу, я хочу подвести элементы в параллельных списков, например, так:Python: 3D список, сумма столбцов
[[1, 2, 3, 4],
[4, 3, 2, 1]] # list of lists (can be more than two)
[5, 5, 5, 5] # result
Но подвох в том, что есть еще один аспект списков, по сути, что делает его '3D'. Но я только хочу подвести вторые элементы в сокровенном паре:
[[[0, 1], [0, 2], [0, 3], [0, 4]],
[[1, 4], [1, 3], [1, 2], [1, 1]]] # add the numbers downward
[[0, 5], [0, 5], [0, 5], [0, 5]] # result
Первые элементы в каждой паре можно оставить в покое. Для них просто копирование первой строки в порядке.
В любом случае, я не могу придумать хороший способ сделать это. Я нашел этот путь:
l = [[[0, 1], [0, 2], [0, 3], [0, 4]],
[[1, 4], [1, 3], [1, 2], [1, 1]]]
s = map(sum, zip(*[[j[1] for j in i] for i in l])) # to be summed
o = [i[0] for i in l[0]] # others
result = [[j for j in i] for i in zip(o, s)]
... но я не могу его обнажить. Если есть более хороший способ, я буду очень благодарен.
Спасибо за все ваши умственные работы!
P.S. Помните, что в списке может быть любое количество списков, а не только 2!
Вы смотрели на numpy массивов и масок? Я думаю, что первая часть «Моя конечная цель» делает вопрос немного запутанным. Может быть, вы должны принять эту часть. –