python的'return'仅返回循环的第一次迭代结果

时间:2014-03-28 07:32:24

标签: python-3.x

def intersect(seq,seq1): res=[] for x in seq: if x in seq1: res.append(x) return res

return res仅在函数调用中返回['s']seq="spam"seq1="scam";为什么它不会在结果中返回['s','a','m']

谢谢

2 个答案:

答案 0 :(得分:3)

因为行

return res

位置不正确(换句话说,它有错误的缩进)。它应该在for循环之外,所以你的程序首先完成循环,然后返回结果:

def intersect(seq, seq1):
    res = []
    for x in seq:
        if x in seq1:
            res.append(x)
    return res

注意:请记住,缩进在Python中非常重要,因为它用于确定语句的分组。

答案 1 :(得分:1)

您的return res缩进错误。它应该是:

def intersect(seq,seq1):
    res=[]
    for x in seq:
        if x in seq1:
            res.append(x)
    return res

>>> intersect('scam','spam')
['s','a','m']

你之前做的是你附加一个值然后返回它。当您附加res值时,您希望返回all。这种情况发生在 for循环之后,就在您放置return res行时。因此,它应与for语句具有相同的缩进。