繁体   English   中英

如何在python中将列表中的所有元素彼此相乘?

[英]How to multiply all elements in a list with each other in python?

我试图将每个元素与其旁边的元素相乘,然后将它们加在一起。 (我必须使用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对象不可迭代”,如果有人可以帮助我,我将不胜感激。

您可以将zip()遍历列表,将各项相乘并在末尾取sum()

C = [7,5,4,5,3]
print(sum(x * y for x, y in zip(C, C[1:])))
# 90

您的方法存在很多问题。 首先,您尝试对for循环中的len(C)值进行迭代。 相反,您想使用range(len(C))因为这会返回一个从0到len(C)的整数生成器,您可以对其进行迭代。 其次,我们不对Python中的循环变量进行更改,因为该变量在循环的每次迭代开始时都会被覆盖,因此任何更改都将被忽略。 第三,您要计算的answ会产生错误,因为您试图将数组切片转换为整数。 您还向后索引它们。 您想要做的是:

sum(a * b for a, b in zip(C, C[1:]))

这将使您将列表中每个元素与其右边位置中的元素相乘的总和。 但是,这不考虑列表的边缘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM