小知识点2

1、递归与生成器

题目内容:

1. 编写函数,实现功能:将[1,2,[3,[4,5]],6,[7,]] 转换成[1,2,3,4,5,6,7]

2. [1,2,[3,[4,5]],6,[7,]]  用生成器将其生成[1,2,3,4,5,6,7]

解法一(递归):

def new_lst(l):
    r = []
    for i in l:
        if type(i) is list:
            r+=new_lst(i)
        else:
            r.append(i)
    return r

解法二(递归)

def get_new_lst(lst):
    if type(lst) is list:
        return [y for i in lst for y in get_new_lst(i)]
    else:
        return [lst]

解法三(生成器)

def get_new_lst(l):
    for i in l:
        if type(i) is list:
            yield from get_new_lst(i)
        else:
            yield (i)

猜你喜欢

转载自www.cnblogs.com/linshuhui/p/9789479.html