我用 python 编写了这个小程序来显示一个十进制整数作为其数字的排序列表:
import math
import sys
import os
l = []
def f(n):
if (math.floor(n/ 10) == 0):
l.append(n)
return l
else:
l.append(n%10)
return f(int((n - (n%10))/10))
def g(n):
return sorted(f(n))
print( g(1) )
print ([1] == [1])
print (g(1) == g(1))
似乎在运行它时,它应该回答 [1], True, True。
当我运行它时,它给了我看似矛盾的答案 [1], True, False。为什么会这样?
请您参考如下方法:
您正在更改全局 l,然后返回排序后的副本。 l 不断增长:
>>> g(1)
[1]
>>> l
[1]
>>> g(1)
[1, 1]
>>> l
[1, 1]
>>> g(1)
[1, 1, 1]
>>> l
[1, 1, 1]
[1, 1] 不等于 [1, 1, 1]。
如果您想在每次调用 g() 时生成一个单元素列表,请不要使用全局列表。
