Skip to main content
 首页 » 编程设计

python之插入拼接列表时出现奇怪的行为

2025年05月04日11zhujiabin

<分区>

我想要实现的是将一个小的 2D 列表插入到一个大的列表中(我使用的是 Python 2.7.3)。

为什么我得到的 var1 和 var2 的结果不同?

def modify(foo): 
    small = [[1]*2]*2 
    for y, line in enumerate(small): 
        foo[y+1][1:3] = line 
    return foo 
 
var1 = [[0]*4]*4 
var2 = [ 
    [0, 0, 0, 0], 
    [0, 0, 0, 0], 
    [0, 0, 0, 0], 
    [0, 0, 0, 0]] 
 
print modify(var1) 
print modify(var2) 
 
# Result: 
# var1 = [ 
#   [0, 1, 1, 0], 
#   [0, 1, 1, 0], 
#   [0, 1, 1, 0], 
#   [0, 1, 1, 0]] 
# 
# var2 = [ 
#   [0, 0, 0, 0], 
#   [0, 1, 1, 0], 
#   [0, 1, 1, 0], 
#   [0, 0, 0, 0]]