这是我的代码我得到了两个不同的输出,分别是[2]和[2,4,6],有人能解释一下吗?
list = [1,2,3]
def getdouble(l):
result = []
for i in l :
i = i * 2
result.append(i)
return result
print getdouble(list)
def getdouble_v2 (l):
result = []
for i in range(len(l)):
l[i] = l[i] * 2
result.append(l[i])
return result
print getdouble_v2(list)
获得您所要求的输出的唯一方法是如果文件中的缩进被破坏。检查python -tt
中没有混合空格和制表符
对于相同的输入列表,两个函数返回相同的result
列表。然而,第二个函数在l[i] = l[i] * 2
行中也修改了原始列表。第一个函数没有。
l = [1,2,3]
result = [2,4,6]
第二个函数的结果是:
l = [2,4,6]
result = [2,4,6]
除了
这一行,你使用了4个空格来缩进 return result
被制表符缩进。这很不幸,因为编辑器将制表符显示为4个空格,但Python将其视为8个空格,因此在Python
中代码看起来像这样list = [1,2,3]
def getdouble(l):
result = []
for i in l :
i = i * 2
result.append(i)
return result
所以你看,它在第一个元素被添加到列表后返回