列表和嵌套列表的简单点积以单独列表中的索引为条件

时间:2019-07-19 01:06:37

标签: python

这是一个使用嵌套列表和普通列表的简单点积(或总积)。

x1 = [[1, 1, 1], [9, 9, 9]]
x2 = [2, 2, 2]
M = [0]

result = []
for x in x1:
    result.append(sum(a * b for a, b in zip(x, x2)))

结果

[6, 54]

但是,在涉及M中指定的索引m的条件下,我希望结果中的某些元素可能为None。

我想进行比较:对于每个x[m] < x2[m],附加的值应为None,而不是总和。

因此,使用上述示例的预期结果应该是:

result = [None, 54]

...因为1 <2为真,所以无

...并且9 <2为假,因此请追加总和,否则:54

一个要求是M的长度可以变化并且可以为空。

2 个答案:

答案 0 :(得分:1)

仅在最后添加最终条件?

for m in M:
    if x[m] < x2[m]:
        result[m] = None

答案 1 :(得分:0)

使用列表理解, 仅对-

有效
  • 如果x2有一个列表。
  • M[0]有一个元素。

例如。

x1 = [[1, 1, 1], [9, 9, 9]]
x2 = [2, 2, 2]
M = [0]
result = []
for x in x1:
    # return true if x[m] less than x2[m]
    is_less = [(True if x[m] < x2[m] else False) for m in M][0]
    #check is_less is true then append None into result list
    if is_less:
        result.append(None)
    else:
        result.append(sum(a * b for a, b in zip(x, x2)))

print(result)

O / P:

[None, 54]