Python 3.x 函数影响原始列表
我正在通过向一些排序算法传递字符串列表来测试它们。结构如下:Python 3.x 函数影响原始列表,python-3.x,Python 3.x,我正在通过向一些排序算法传递字符串列表来测试它们。结构如下: def test(test_case): ans = sorted(test_case) for f in functs: assert f(test_case) == ans 然而,我发现test\u案例一直在变化(我只调用了一次test())。有一段时间我通过了[“Test”,“String']到Test(),我把print()放在f中捕捉输入。我发现f接收到[(“Test”,“String”),
def test(test_case):
ans = sorted(test_case)
for f in functs:
assert f(test_case) == ans
然而,我发现
test\u案例
一直在变化(我只调用了一次test()
)。有一段时间我通过了[“Test”,“String']
到Test()
,我把print()
放在f
中捕捉输入。我发现f
接收到[(“Test”,“String”),(“Test”,“String”),(“Test”,“String”),(“Test”,“String”),(“Test”,“String”),(“Test”,“String”),(“Test”,“String”),…])
。我可以知道发生这种情况的原因以及解决方法吗?排序
不会影响原始列表(即,它不会对列表进行适当排序),但如果您在交互式解释器上执行代码,将打印排序
的输出。因此,您看到的是排序的列表,后面是原始列表
['a', 'day', 'for', 'have', 'nice', 'reading', 'thanks']
['thanks', 'for', 'reading', 'have', 'a', 'nice', 'day']
谢谢我发现简化的一个有误导性,并且与我的主要问题有联系。我自己找到了答案——函数将修改传入的列表。