You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现函数u=Σ(n*x*y)的代码求助(n、x、y为序列/数组)

解决Python计算u数组的问题

首先明确你的需求:对x和y中对应位置的元素对(x_i, y_i),计算所有nn∈n的nnx_iy_i之和,把每个结果存入u数组。

你原有代码的问题

  1. Python循环关键字是小写for,不是For,大小写错误会直接报错
  2. 列表不能直接用*做元素相乘,x*y的写法在Python里是非法操作(除非是列表重复,但完全不符合你的需求)
  3. 循环逻辑搞反了:你需要遍历x和y的元素对,而非遍历n中的每个数

方法1:直观嵌套循环(新手易理解)

先定义好所有变量,通过嵌套循环逐个计算每个u_i的值:

x = [1, 2, 3, 4, 5]
y = [6, 7, 8, 9, 10]
n = list(range(1, 101))  # 生成1到100的整数列表

u = []
# 同时遍历x和y的对应元素
for xi, yi in zip(x, y):
    current_sum = 0
    # 遍历n中的每个数,累加计算总和
    for nn in n:
        current_sum += nn * xi * yi
    u.append(current_sum)

print(u)

也可以用列表推导式简化成一行:

u = [sum(nn * xi * yi for nn in n) for xi, yi in zip(x, y)]

方法2:高效优化版(减少重复计算)

观察公式可发现:每个u_i = x_i * y_i * sum(n),因为sum(nn*x_i*y_i) = x_i*y_i * sum(nn)。先计算n的总和,再逐个计算u_i,效率更高:

x = [1, 2, 3, 4, 5]
y = [6, 7, 8, 9, 10]
n = list(range(1, 101))

sum_n = sum(n)  # 1到100的和是5050
u = [xi * yi * sum_n for xi, yi in zip(x, y)]

print(u)

这个方法只需要计算一次sum(n),避免了重复遍历n,当n的长度很大时优势明显。

验证结果

比如第一个元素u0 = 165050 = 30300,第二个u1=275050=70700,以此类推,运行代码后得到的u数组完全符合你的需求。

内容的提问来源于stack exchange,提问作者nofugz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:22:34