请教,大神看下为什么我写的代码运行结果和我想的不一样

def last_number(lis):
    if len(lis)>2:
        lis=[v for n,v in enumerate(lis) if (n+1)%3 !=0]
        lis=[lis[-1]]+lis
        lis.pop()
        last_number(lis)
    else:
        return lis
print(last_number([1,2,3,4,5,6,7,8,9,10]))

我理解的结果应是[4,5]
为什么运行后结果是:None

Jason990420
最佳答案

The result didn't return when len(lis) > 2

def last_number(lis):

    if len(lis)>2:
        lis=[v for n,v in enumerate(lis) if (n+1)%3 !=0]
        lis=[lis[-1]]+lis
        lis.pop()
        return last_number(lis)     # <=======
    else:
        return lis
1年前 评论
讨论数量: 2
Jason990420

The result didn't return when len(lis) > 2

def last_number(lis):

    if len(lis)>2:
        lis=[v for n,v in enumerate(lis) if (n+1)%3 !=0]
        lis=[lis[-1]]+lis
        lis.pop()
        return last_number(lis)     # <=======
    else:
        return lis
1年前 评论

非常感谢,点拨下就明白了

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!