我在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
。为什么会这样?
答案 0 :(得分:10)
您正在更改全局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()
时生成单个元素列表,请不要使用全局列表。
答案 1 :(得分:1)
print(g(1))
print(g(1))
print(g(1))
输出:
[1]
[1, 1]
[1, 1, 1]
因为您使用的是单个全局列表l
,每次运行f
时都会更改,并且不会重置。