栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python 3替代已弃用的compile.ast展平功能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 3替代已弃用的compile.ast展平功能

您声明的函数需要一个嵌套列表,并将其展平为新列表。

要将任意嵌套的列表平整到新列表中,可以按预期在Python 3上运行:

import collectionsdef flatten(x):    result = []    for el in x:        if isinstance(x, collections.Iterable) and not isinstance(el, str): result.extend(flatten(el))        else: result.append(el)    return resultprint(flatten(["junk",["nested stuff"],[],[[]]]))

印刷品:

['junk', 'nested stuff']

如果您希望生成器执行相同的操作:

def flat_gen(x):    def iselement(e):        return not(isinstance(e, collections.Iterable) and not isinstance(e, str))    for el in x:        if iselement(el): yield el        else: for sub in flat_gen(el): yield subprint(list(flat_gen(["junk",["nested stuff"],[],[[[],['deep']]]]))) # ['junk', 'nested stuff', 'deep']

对于Python 3.3及更高版本,请使用yield
from
而不是循环:

def flat_gen(x):    def iselement(e):        return not(isinstance(e, collections.Iterable) and not isinstance(e, str))    for el in x:        if iselement(el): yield el        else: yield from flat_gen(el)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669443.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号