我正在尝试将每个元素与其旁边的元素相乘,然后将它们相加。 (我必须使用for / while循环,因为这是我要解决的问题所需的条件)
C= [7,5,4,5,3]
j = 0
for j in len(C):
j += 1
answ = (int(C[0::j])*int(C[1::j]))
print answ
我不断收到错误消息“ int对象不可迭代” 如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:3)
您可以zip()
遍历列表,将项目相乘,最后取sum()
:
C = [7,5,4,5,3]
print(sum(x * y for x, y in zip(C, C[1:])))
# 90
答案 1 :(得分:0)
您的方法存在很多问题。首先,您尝试遍历for循环中的值len(C)
。相反,您想使用range(len(C))
,因为这将返回一个从0到len(C)
的整数生成器,您可以对其进行迭代。其次,我们不对Python中的循环变量进行更改,因为该变量在循环的每次迭代开始时都会被覆盖,因此任何更改都将被忽略。第三,answ
的计算将产生错误,因为您正试图将数组切片转换为整数。您还向后索引它们。您想做的是:
sum(a * b for a, b in zip(C, C[1:]))
这将使您将列表中每个元素与其右边位置的元素相乘的总和。但是,这并不考虑列表的边缘。