gpt4 book ai didi

python - 函数返回 1,但输出为零?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:52 26 4
gpt4 key购买 nike

我有一个不寻常的情况,该函数返回零但是当我在调试器中运行它时,上面的函数返回 1:

def solution(A):
n = range(1, len(A)+1)

if(len(A)!=len(n)):
return 0

s = sorted(A)

if(s==n):
return 1
else:
return 0

y = solution([4, 1, 3, 2])

print(y)

这是 Python 中的一些常见行为吗?

最佳答案

这样的代码在 python 2 中可以工作,但是 python 3 range 不返回 list 但它被保存为一个范围对象,其中 len 有效(并尽力模拟实际的 list)。但是在 python 3 中:

>>> range(1,4)
range(1, 4)
>>> list(range(1,4))
[1, 2, 3]
>>> [1,2,3] == range(1,4)
False
>>> list(range(1,4)) == [1,2,3]
True

listrange 类型是不同的,根据文档

Objects of different types, except different numeric types, never compare equal.

要获得相等性,您需要将 n 显式转换为列表

n = list(range(1, len(A)+1))

更简洁的工作方法:

def solution(A):
return int(sorted(A) == list(range(1,len(A)+1)))

恕我直言,保持 int 转换不是必需的,除非您明确想要返回 01 而不是自然的 FalseTrue

为什么你得到 1 或 0 取决于你的调试与否可能是因为你正在使用 2 个不同的 python 安装,一个用于调试,一个用于运行。如果您已经使用 python 3,我建议您摆脱 python 2 安装。

关于python - 函数返回 1,但输出为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358320/

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