【问题标题】:Python: Multiply elements with eachother in a list [duplicate]Python:将列表中的元素相乘[重复]
【发布时间】:2022-01-25 13:37:04
【问题描述】:

如何使用 for 循环将列表中的每个元素与列表中的所有其他元素相乘?像这样:[1, 3, 5, 7] 应该像这样相乘:1 * 3 + 1 * 5 + 1 * 7 + 3 * 5 + 3 * 7 + 5 * 7

【问题讨论】:

  • 单线:sum(a[i]*a[k] for i in range(len(a)) for k in range(i+1, len(a))).

标签: python list loops


【解决方案1】:

不使用列表索引:

listit = [1, 5, 3, 7]

x_position = 0
result = 0

for x in listit:
    x_position += 1
    y_position = 0
    for y in listit:
        y_position += 1
        if x_position < y_position:
            print(f"{x} * {y}")
            result += x * y
            print(result)

print(result)

【讨论】:

    【解决方案2】:

    当然可以:

    a = [1, 3, 5, 7]
    s = 0
    for i in range(len(a)):
        for j in range(i + 1, len(a)): 
            s += a[i] * a[j]
    print(s)
    

    【讨论】:

      【解决方案3】:

      您可以将combinations 生成的每个组合相乘并求和。

      from itertools import combinations
      from operator import mul
      l = [1, 3, 5, 7]
      
      sum([mul(*x) for x in combinations(l,2)])
      

      输出

      86
      

      【讨论】:

      • sum(x*y for x,y in combinations(a, 2))?
      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多