python中的意外行为-函数从相同的输入产生不同的结果

时间:2018-11-16 21:53:52

标签: python

我觉得这里缺少基本知识。 根据输入的生成方式,相同的输入似乎有不同的结果。

这是该问题的简化版本,存在于更大的代码库中,因此,请原谅任何奇怪之处,因为我试图找出这种差异的原因,而不是修复此特定代码段。

from __future__ import print_function

def wtf(thing):
    list(thing)
    for i in range(0, 4):
        print(len(thing[i]),)
        while len(thing[i]) < 10:
            thing[i].append(None)
    print()

# Generated by method1
test1  = [[None]]*4

# Generated by method2
test2 = []
for b in range(4):
    test2.append([None])


print(test1==test2)

print()

print(test1, type(test1))
wtf(test1)

print()

print(test2, type(test2))
wtf(test2)

输出

True

[[None], [None], [None], [None]] <type 'list'>
1
10
10
10


[[None], [None], [None], [None]] <type 'list'>
1
1
1
1

0 个答案:

没有答案