两种列表迭代有什么区别

  • 本文关键字:区别 列表 迭代 两种 python
  • 更新时间 :
  • 英文 :


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

所以你看,它在第一个元素被添加到列表后返回

最新更新