两个不等长嵌套列表的逐元素乘法

Element-wise multiplication of two nested lists of unequal length

我需要对两个长度不等的嵌套列表进行元素明智的乘法运算。如果长度相同,我知道如何进行逐元素乘法,但我在这个问题上花了太多时间却没有解决。

我正在使用 Python 3.x

multiplier_list 的每个内部列表将单独与数据的每个内部列表一起使用 - 元素明智。

    data = [[[2,3,4],[5,6,10],[11,12,13]],[[2,3,4],[5,6,10],[11,12,13]]]
    multiplier_list = [[2,3,4],[5,6,10]]

    expected_result = [[[4,9,16],[10,18,40],[22,36,52]],[[10,18,40],[25,36,100],[55,72,130]]]

根据您提供的数据,嵌套列表 等长的,但乘法因子的嵌套级别不相等。这可以通过在实际计算乘法之前简单地进一步下降到一个列表而不是另一个列表来解决。

例如,multiplier_listdata都有两个元素。 data的每个元素本身就是一个列表,需要multiplier_list的对应元素对其进行操作。在这两种情况下,最低级别的列表都具有三个正确对应的元素。

这是一个单行(技术上)列表推导式,它根据给定的输入产生预期的输出:

expected_result = [
    [
        [
             (datum * factor)
             for datum, factor in zip(data_subsublist, mult_sublist)
        ] for data_subsublist in data_sublist
    ] for data_sublist, mult_sublist in zip(data, multiplier_list)
]
# [[[4, 9, 16], [10, 18, 40], [22, 36, 52]], [[10, 18, 40], [25, 36, 100], [55, 72, 130]]]