【发布时间】: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))).
如何使用 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))).
不使用列表索引:
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)
【讨论】:
当然可以:
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)
【讨论】:
您可以将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))?