注册 登录
编程论坛 Python论坛

PYthon新手 关于遍历嵌套列表中使用DEF 自定义函数 print 和 return的问题

xiaoxin007 发布于 2019-12-12 15:32, 1953 次点击
#     L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]
#     1) 写一个函数print_list(lst) 打印出所有元素
#       print_list(L)  # 打印 3 5 8 10 13 14 ...

def print_list(L):
    for l in L:
        if type(l) is int:
            print(l)
        else:
            print_list(l)
结果:

3
5
8
10
13
14
15
18
20
L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]        
print_list(L)


def print_list(L):
    for l in L:
        if type(l) is int:
            print(l)
        else:
            print(print_list(l))

L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]        
print_list(L)

结果如下:

3
5
8
None
10
13
14
None
15
18
None
20
若是将上述的红色部分换成return(print_list(l))时,是什么结果呢

def print_list(L):
    for l in L:
        if type(l) is int:
            print(l)
        else:
            return(print_list(l))

L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]        
print_list(L)

结果如下:

3
5
8
有三个部分,就对第一部分,关于打印嵌套列表中的每一个元素,是否是先执行else部分之后再调用自定义函数本身后再执行If部分.第二就是关于使用print(print_list(l))后,3,5,8为什么会被打印出来.第三,使用内建函数return后为什么只打印出了3,5,8?
2 回复
#2
fall_bernana2019-12-12 16:15
以下是引用xiaoxin007在2019-12-12 15:32:06的发言:

#     L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]
#     1) 写一个函数print_list(lst) 打印出所有元素
#       print_list(L)  # 打印 3 5 8 10 13 14 ...

def print_list(L):
    for l in L:
        if type(l) is int:
            print(l)
        else:
            print_list(l)
结果:

3
5
8
10
13
14
15
18
20
L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]        
print_list(L)


def print_list(L):
    for l in L:
        if type(l) is int:
            print(l)
        else:
            print(print_list(l))

L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]        
print_list(L)

结果如下:

3
5
8
None
10
13
14
None
15
18
None
20
若是将上述的红色部分换成return(print_list(l))时,是什么结果呢

def print_list(L):
    for l in L:
        if type(l) is int:
            print(l)
        else:
            return(print_list(l))

L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]        
print_list(L)

结果如下:

3
5
8
有三个部分,就对第一部分,关于打印嵌套列表中的每一个元素,是否是先执行else部分之后再调用自定义函数本身后再执行If部分.第二就是关于使用print(print_list(l))后,3,5,8为什么会被打印出来.第三,使用内建函数return后为什么只打印出了3,5,8?

第一部分:是的
第二部分: print是内置函数.会先执行print_list(l)再打印print_list的返回值NULL,就像print(1+2),打印出来的是3
第三部分: 函数遇到return,会直接跳出print_list函数,返回结果return()里的值.这里会先计算print_list([3,5,8]),然后跳出print_list.
#3
xiaoxin0072019-12-12 17:30
回复 2楼 fall_bernana
非常感谢您的回复  很用帮助  
1