Skip to main content
 首页 » 编程设计

python之Python 中的矛盾输出

2025年05月04日11emanlee

我用 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() 时生成一个单元素列表,请不要使用全局列表。