python编程两个列表求内积

输入两个包含若干整数的列表。如果两个列表等长,输出内积。如果列表长度不一致,则以较短列表为标准。比如输入[1,2,3,4,5],[2,3,4]那么结果是12+23+3*4=20 python题

不知道问题出在哪

img

您的两条 print() 语句,目的是打印最后出果,应该在for 循环外。

您那样写在循环内是打印的每一次循环结果。


看您题目描述,没有特别说明不可以用现存的“轮子”,用 zip() 更好解决,zip() 函数正好是以短列表为基准。


  • zip() 示例
#!/sur/bin/nve python
# coding: utf-8

s1, s2 = (eval(input(f"\n输入列表{i}:")) for i in '12') # 用解析式输入两个列表。
#print((s1, s2)) # 程序调试用语句。
m = [a*b for a, b in zip(s1, s2)] # 内积也可以用列表解析式。
print(f"\n所得内积为:\n{m}\n")

  • 代码运行效果截屏图片

    img

关于更多 zip() ,可以看看我的学习笔记——


当然,也可以写成您一样的短句。但得要有判定较短列表长度的操作。

  • Python 代码
#!/sur/bin/nve python
# coding: utf-8

s1 = eval(input(f"\n输入列表1:"))
s2 = eval(input(f"\n输入列表2:"))


n = len(s1) if len(s1) < len(s2) else len(s2) # 取较短列表元素总数。
m = []

for i in range(n): # 遍历算内积,以较短列表长度为准。
    m.append(s1[i]*s2[i])

print(f"\n所得内积为:\n{m}\n")


  • 代码运行效果截屏图片

    img