针对群里面问的很多的一个题我回答一下先理解题的意思,其实就是说一个大列表,一个小列表,要求小列表能够对大列表的每一个值都能够完成内积运算,那么其实可以画一个简单地图来理解一下。
也就是说我们能够让小列表和大列表的每一个数字都参与运算,然后依次输出出来,那么我们就可以这样写
lt1 = [1,2,3,4,5,6]
lt2=[1,2,3]
res = []
for i in range(len(lt1)-2):
for j in range(len(lt2)):
k += lt2[j]*lt1[i+j]
res.append(k)
for r in res:
print('{:.3f}'.format(r),end=' ')
res是一个列表用于存放我们的所有结果(也就是k)
之后的代码可能比较难懂,这就借助我们的图片来理解了。
len(lt1)-2是为什么呢?
我们先看后面,因为小列表的元素少,所以说我们紧着小的来。j的意思就是遍历小列表的元素,然后一轮循环加一次,小循环结束后,求得的是一次计算后的值。j的取值范围则是0到2(0是第一个)。而大循环,则是每一轮循环,都将小列表和大列表的各个元素向右错开一位。这也就可以解释,为什么要range(len(lt1)-2)。lt1的个数是6个,所以i的取值范围是0到3(range(4))。这三个加上j的两个刚好是六个。这样即可遍历完大列表。
后面就没有任何难度了,放到列表里输出即可