Python中的数组更新异常

2024-09-30 02:19:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了以下代码。在支票内, 当我更新d[ii][jj]时,编译器似乎有了自己的自由,将下面所有的列条目都设置为1。在

代码:

def checkd(d, level, a, b):
i = len(b)
j = len(a)
print ['0'] + list(a)
for ii in range(i):
    for jj in range(j):
        if a[jj] == b[ii]:
            #print a[jj] +" "+ b[ii] + " Matched."
            d[ii][jj] = 1
        print b[ii] + "\t" + a[jj] + "\t" + str(d[ii][jj])
    print [b[ii]] + [str(m) for m in d[ii]]
return d


a = raw_input("First word:")
b = raw_input("Second word:")
w = input("Size of words to check:")

d = [[0]*len(a)]*len(b)

d = checkd(d, w, a, b)
print d
for x in d : print x

输出:

^{pr2}$

正如你所注意到的,这不仅会导致一些随机匹配(d,n,1?!)在“d”行, 返回的2d数组只是函数中最后一行的副本。在

我对Python有一些经验。如果我不是在寻找一个尽可能多的解释?在

谢谢!在


Tags: 代码inforinputrawlen编译器range
1条回答
网友
1楼 · 发布于 2024-09-30 02:19:42

这将生成一个len(b)引用的列表,引用同一个len(a)个零的列表。共创建两个相互关联的列表。在

d = [[0] * len(a)] * len(b)

你想做的是:

^{pr2}$

int是不可变的,因此可以安全地复制。在

相关问题 更多 >

    热门问题