我觉得这里缺少基本知识。 根据输入的生成方式,相同的输入似乎有不同的结果。
这是该问题的简化版本,存在于更大的代码库中,因此,请原谅任何奇怪之处,因为我试图找出这种差异的原因,而不是修复此特定代码段。
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