Python练习题-只给自己看的,非学习资料

1,list = [{‘name’:’小红’,sub’:[{‘name’:’小明’,’sub’:[{‘name’:’小花’}]},{’name‘:’小黑’}]}]

这是一个嵌套列表,但是嵌套的可能有n层,如何运用递归函数得到列表中所有的“name”值,并且有层级关系的名字需要拼接起来,得到的结果是“[‘小红’,’小红’/’小明,’小红’/’小明/’小花’, ‘小红’/’小黑’]” 。

解题思路:

因为外层的名字要与内层名字拼接,所以每次获取外层的名字,都要作为参数传入内层,最外层参数默认为空字符串;每一次将外层名字与当前层名字拼接后,都判断是否存在下一层,如果存在则将下一层的列表和当前层的拼接结果作为参数进行递归,并将递归结果与当前结果列表合并。

lst = [{
   'name': '小红', 'sub': [{
   'name': '小明', 'sub': [{
   'name': '小花'}]}, {
   'name': '小黑'}]}]
def fun(lst, name=''):  # 参数“name”为已从字典中取出的键值
    result = []  # 每次递归的结果列表
    for dic in lst:  # 从列表获取字典
        if name:  # 如果有上一次递归结果
            names = name + '/' + dic['name']  # 上一次递归结果连接当前字典“name”键的值
        else:
            names = dic['name']  # 直接将当前字典“name”键的值存入
        result.append(names)  # 结果列表中添加当前递归结果
        sub = dic.get('sub', None)  # 获取子级列表
        if sub:  # 如果存在子级列表
            result = result + fun(sub, names)  # 当前结果列表与子级结果列表合并
    return result  # 返回每次递归结果列表


print(fun(lst))

2,分析以下代码的结果:

def func():
    temp = [lambda x: i * x for i in range(4)]
    return temp


for f in func():
    print(f(2))
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值