0

这是我的代码,我得到了两个不同的输出,分别是 [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)
4

3 回答 3

2

获得您声称的输出的唯一方法是文件中的缩进被破坏。确认您没有将空格和制表符与python -tt.

于 2013-01-12T11:31:21.960 回答
0

两个函数都result为相同的输入列表返回相同的列表。然而,第二个函数也修改了行中的原始列表l[i] = l[i] * 2。第一个功能没有。

因此,第一个函数的结果是:

l = [1,2,3]
result = [2,4,6]

第二个函数的结果是:

l = [2,4,6]
result = [2,4,6]
于 2013-01-12T11:33:37.377 回答
0

您正在使用 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

So you see, it's returning after the first item is appended to the list

于 2013-01-12T12:11:26.650 回答