Python 2.7中的错误或误解?
可能重复: 我是遗漏了什么还是这真的是一个错误?例如,下面是一个递归函数,它从元组规范生成多维列表Python 2.7中的错误或误解?,python,Python,可能重复: 我是遗漏了什么还是这真的是一个错误?例如,下面是一个递归函数,它从元组规范生成多维列表 dim((2,3)) returns [[[],[],[]],[[],[],[]]] 唯一的问题是每次调用它时它都会添加到列表中,如果我调用它时没有默认参数,如果我指定默认参数如dim2,3,[],那么就可以了。每次调用都会保存默认参数的状态!如果没有人能找到我正在做的事情的问题,我会在python bug reporter中输入它 cdr = lambda l : l[1:] car
dim((2,3))
returns
[[[],[],[]],[[],[],[]]]
唯一的问题是每次调用它时它都会添加到列表中,如果我调用它时没有默认参数,如果我指定默认参数如dim2,3,[],那么就可以了。每次调用都会保存默认参数的状态!如果没有人能找到我正在做的事情的问题,我会在python bug reporter中输入它
cdr = lambda l : l[1:]
car = lambda l : l[0]
last = lambda x : x[-1:][0]
def dim(t, c = []):
if len(t) > 0:
i = car(t)
for j in range(i):
c.append([])
dim(cdr(t), last(c))
return c
print dim([2,3])
print dim([2,3])
print dim([2,3])
print dim([2,3])
def dimt,c=[]
这是代码中的一个bug。该c=[]部分在整个程序中只计算一次。当您调用dim时,c会不断追加到。更好的方法是:
def dim(t, c=None):
if c is None:
c = []
...
确切地但是为了挑剔,在与最显著的单例进行比较时,是首选的,当然,无-即s/if c==None/if c is None/。