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

Python 3替代已弃用的compile.ast展平功能,第1张

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存