簡體   English   中英

為什么我在列表中的值不會以不同方式計算奇數和偶數之和並將其返回到新列表中?

[英]Why does my values in a list doesn't calculate sum odd and even numbers differently and return it in a new list?

我有一個名為 li 的列表,其值為 [1,2,4,5],我想返回一個新列表,其中包含奇數和偶數之和,例如 new_list = [6,6],其中值相加為 1+5 = 6 和2+4 = 6。但是,我收到的 output 是 [1]。 下面是我的代碼。

class Solution(object):

    def calculate_odd_even(self, li):

        even = 0
        odd = 0

        sum_num = []

        for i in range(len(li)):
            if li[i] % 2 == 0:
                even += 1
                sum_num.append(even)
            else:
                odd += 1
                sum_num.append(odd)

            return sum_num


if __name__ == "__main__":
    p = Solution()
    lit = [1, 2, 4, 5]
    print(p.calculate_odd_even(lit))

您的代碼中有幾個問題。

  • return得太早了(在循環中)
  • 您添加 +1 而不是值
  • 你嘗試 append 到每個循環(只在最后做)
  • 奇數/偶數的順序取決於輸入數據(第一個看到的奇數/偶數將是第一個)

其他“小”問題:

  • 不要遍歷索引,遍歷值
class Solution(object):

    def calculate_odd_even(self, li):
        even = 0
        odd = 0

        sum_num = []
        for x in li:
            if x % 2 == 0:
                even += x
            else:
                odd += x
                
        sum_num.append(odd)
        sum_num.append(even)
        return sum_num


if __name__ == "__main__":
    p = Solution()
    lit = [1, 2, 4, 5]
    print(p.calculate_odd_even(lit))

更簡單的變體:

class Solution(object):

    def calculate_odd_even(self, li):
        sum_num = [0, 0]
        for x in li:
            sum_num[1-x%2] += x  # use sum_num[x%2] += x for even/odd order
        return sum_num


if __name__ == "__main__":
    p = Solution()
    lit = [1, 2, 4, 5]
    print(p.calculate_odd_even(lit))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM