将嵌套的ITerable转换为lis

2024-10-01 04:46:35 发布

您现在位置:Python中文网/ 问答频道 /正文

{tools>或者用一个对应的python}或cditerable转换成对应的python}1?我想保存f,这样我就可以对它进行多次迭代,这意味着如果{}的一些嵌套元素是生成器,我就有麻烦了。在

我将给出一个输入/输出示例。在

>>> g = iter(range(2))
>>> my_input = [1, [2, 3], ((4), 5), [6, g]]
>>> magical_function(my_input)
[1, [2, 3], [[4], 5], [6, [0, 1]]]

如果输出也包含元组,那就好了。问题是,迭代g“消耗”了它,因此不能再次使用它。在


Tags: 元素示例inputmymagicalrangefunctiontools
1条回答
网友
1楼 · 发布于 2024-10-01 04:46:35

这似乎是最好的方法,检查每个元素是否是iterable,如果是iterable,则调用递归函数。作为一个快速的准备,我会尝试类似于:

import collections

g = iter(range(2))
my_input = [1, [2, 3], ((4), 5), [6, g]]

def unfold(iterable):
    ret = []
    for element in iterable:
        if isinstance(element, collections.Iterable):
            ret.append(unfold(element))
        else:
            ret.append(element)
    return ret

n = unfold(my_input)
print(n)
print(n)

它回来了

^{pr2}$

这不是最漂亮的方法,您可以找到改进它的方法(它将所有内容放入一个列表中,而不是保留元组),但下面是我将使用的一般思想。在

相关问题 更多 >