gpt4 book ai didi

Python for 循环和 "sum13"方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:31 24 4
gpt4 key购买 nike

我是一个C++程序员,刚刚开始学习python,我得到了以下方法来编写:

Return the sum of the numbers in the array, returning 0 for an empty array. Except the number 13 is very unlucky, so it does not count and numbers that come immediately after a 13 also do not count.

我的解决方案是:

def sum13(nums):
elem_sum = 0
index = 0

while index < len(nums):
if nums[index] != 13:
elem_sum += nums[index]
else:
index += 1 #nums[i] is 13, so skip the next element'
index += 1

return elem_sum

那些熟悉其他基于 C 的语言的人会发现这里的循环类似于(非常清晰)

for(int i = 0; i < nums.size() /*nums.length*/; ++i) {
if(nums[i] != 13) elem_sum += nums[i];
else i++;
}

请注意,我几天前才开始学习 Python,所以我对这门语言还是很陌生。我希望有人可以就如何以“Python”方式编写此循环提供一些建议,或者使用我可能不知道的某些语言功能提供更清晰的解决方案。


在我之前的尝试中(没有成功)我有:

for i in range(len(nums)):
if nums[i] != 13:
elem_sum += nums[i]
else:
i += 1 #nums[i] is 13, so skip the next element'

最佳答案

sumzip 的理解如何:

代码:

data = list(range(12, 16))
print(sum(i for i, j in zip(data, [0] + data) if 13 not in (i, j)))

结果:

27

这是如何运作的?

从内到外,我们从 zip 开始。 zip 接受多个可迭代对象,并在第一次迭代时返回每个可迭代对象的第一个元素,然后在第二次迭代时返回每个可迭代对象的第二个元素,依此类推。

所以我们要评估数据的当前元素加上前一个元素,所以我们传递数据,并通过在前面填充数据来将数据偏移一个元素(在本例中为 0)

这两个列表被展开,一次一个元素,变成i, j。然后,作为理解,如果 13 不在 i, j 中,我们返回 i。然后通过 sum 评估理解,这很奇怪地对所有返回的元素求和。

关于Python for 循环和 "sum13"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43602538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com