Max 函数在循环中不起作用?蟒蛇

问题描述 投票:0回答:1

有人可以解释为什么 max 函数在第一个场景中起作用,而不是在第二个场景中起作用吗?

首先有效:

class Solution(object):
    def kidsWithCandies(self, candies, extraCandies):
        """
        :type candies: List[int]
        :type extraCandies: int
        :rtype: List[bool]
        """
        result = candies
        maxCandies = max(candies)
        for i in range(len(candies)):
            maxCandie = candies[i] + extraCandies
            if maxCandie >= maxCandies:  # this is working as expected
                result[i] = True
            else: result[i] = False
        return result

第二个不起作用:

class Solution(object):
    def kidsWithCandies(self, candies, extraCandies):
        """
        :type candies: List[int]
        :type extraCandies: int
        :rtype: List[bool]
        """
        result = candies
        #maxCandies = max(candies)
        for i in range(len(candies)):
            maxCandie = candies[i] + extraCandies
            if maxCandie >= max(candies):     # this is where it shows a boolean return
                result[i] = True
            else: result[i] = False
        return result

如您所见,唯一的区别是在循环之前声明 Candies 列表的最大值。 糖果的输入可以是:candies = [4,2,1,1,1,2], extraCandies = 1

我尝试了两个版本,但我不知道为什么第二个版本与第一个版本不同

python-3.x max
1个回答
0
投票

当您说

result = candies
时,现在
result
candies
正在引用 same 列表。 然后你通过
candies
变异
result[i] = True/False
。 然后,在
for
循环的下一次迭代中,
max(candies)
可能会返回意外结果,因为列表包含
int
bool
的混合。

© www.soinside.com 2019 - 2024. All rights reserved.