如何对 Python 循环中迭代的元素求和
How to perform sum of elements iterated in Python loop
我是 Python 的新手,我在理解其逻辑工作原理时遇到了困难。
我正在尝试构建一个简单的代码,给定两个列表,找到列表中每个数字之间的差异和 returns 最小差异的平均值。
假设我有这两个列表:
list1=[1, 4, 10]
list2=[2, 3, 6]
使用下面的代码,我可以用第二个列表的数字迭代第一个列表的数字:
for x in list1:
diff=[abs(y-x) for y in list2]
print (diff)
[1, 2, 5] # that is, 1-2, 1-3 and 1-6
[2, 1, 2] # that is, 4-2, 4-3 and 4-6
[8, 7, 4] # that is, 10-2, 10-3, 10-6
使用以下代码,我可以找到每次迭代的最小差异:
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
print (mindiff)
1
1
4
我对此很满意。现在我想对所有最小差异求和,然后将总和除以我计算出的差异数。这是我没有得到的部分。
换句话说,我如何构建一个函数来总结 for 循环所做的所有迭代?之后,(在本例中为 6 (1+1+4))我可以轻松地将差异之和除以 list2 的最大范围。
我该怎么做?
提前感谢您的回答
list1=[1, 4, 10]
list2=[2, 3, 6]
sumOfMinDiffs = 0 # Initialize the sum value to start out at zero
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
print (mindiff)
sumOfMinDiffs += mindiff # Keep track of the sum
maximumRangeOfList2 = max(list2) - min(list2) # I think this is what you mean by "maximum range of list 2"
print(sumOfMinDiffs/maximumRangeOfList2) # Tah dah, this is your answer
# print(sumOfMinDiffs/len(list2)) # This is your answer if you just want to divide by the length of list2
以上代码旨在执行以下操作:
- 在循环外保留一个总和变量,并在每次循环时递增它
- 在 for 循环结束时,计算 "maximum range of list 2" 将是什么并将其存储在变量中
- 对于您的最终答案,只需将总和变量除以范围变量
我认为您可以使用 for 循环外的变量实现您想要的效果,添加每次迭代的值和计算迭代次数的变量。
list1=[1, 4, 10]
list2=[2, 3, 6]
min_sum = 0
n = 0
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
min_sum += mindiff
n+=1
print (mindiff)
print(min_sum/n)
希望对您有所帮助
以下代码可能会帮助您解决问题。
list1=[1, 4, 10]
list2=[2, 3, 6]
n = len(list2)
sum_min = 0
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
sum_min += mindiff # iterating will keep on adding min of differences 1 + 1 + 4
print (mindiff)
print(sum_min/n) # mean minimum difference
我认为,为了计算列表的最小差异的平均值,您需要将最小差异的总和除以每组差异的数量(即 list2
的长度)。
如果你想修改代码,我想你已经明白如何去做了。
我是 Python 的新手,我在理解其逻辑工作原理时遇到了困难。 我正在尝试构建一个简单的代码,给定两个列表,找到列表中每个数字之间的差异和 returns 最小差异的平均值。
假设我有这两个列表:
list1=[1, 4, 10]
list2=[2, 3, 6]
使用下面的代码,我可以用第二个列表的数字迭代第一个列表的数字:
for x in list1:
diff=[abs(y-x) for y in list2]
print (diff)
[1, 2, 5] # that is, 1-2, 1-3 and 1-6
[2, 1, 2] # that is, 4-2, 4-3 and 4-6
[8, 7, 4] # that is, 10-2, 10-3, 10-6
使用以下代码,我可以找到每次迭代的最小差异:
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
print (mindiff)
1
1
4
我对此很满意。现在我想对所有最小差异求和,然后将总和除以我计算出的差异数。这是我没有得到的部分。 换句话说,我如何构建一个函数来总结 for 循环所做的所有迭代?之后,(在本例中为 6 (1+1+4))我可以轻松地将差异之和除以 list2 的最大范围。
我该怎么做?
提前感谢您的回答
list1=[1, 4, 10]
list2=[2, 3, 6]
sumOfMinDiffs = 0 # Initialize the sum value to start out at zero
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
print (mindiff)
sumOfMinDiffs += mindiff # Keep track of the sum
maximumRangeOfList2 = max(list2) - min(list2) # I think this is what you mean by "maximum range of list 2"
print(sumOfMinDiffs/maximumRangeOfList2) # Tah dah, this is your answer
# print(sumOfMinDiffs/len(list2)) # This is your answer if you just want to divide by the length of list2
以上代码旨在执行以下操作:
- 在循环外保留一个总和变量,并在每次循环时递增它
- 在 for 循环结束时,计算 "maximum range of list 2" 将是什么并将其存储在变量中
- 对于您的最终答案,只需将总和变量除以范围变量
我认为您可以使用 for 循环外的变量实现您想要的效果,添加每次迭代的值和计算迭代次数的变量。
list1=[1, 4, 10]
list2=[2, 3, 6]
min_sum = 0
n = 0
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
min_sum += mindiff
n+=1
print (mindiff)
print(min_sum/n)
希望对您有所帮助
以下代码可能会帮助您解决问题。
list1=[1, 4, 10]
list2=[2, 3, 6]
n = len(list2)
sum_min = 0
for x in list1:
diff=[abs(y-x) for y in list2]
mindiff=min(int(s) for s in diff)
sum_min += mindiff # iterating will keep on adding min of differences 1 + 1 + 4
print (mindiff)
print(sum_min/n) # mean minimum difference
我认为,为了计算列表的最小差异的平均值,您需要将最小差异的总和除以每组差异的数量(即 list2
的长度)。
如果你想修改代码,我想你已经明白如何去做了。