在Python中展平列表展平()不起作用可能是生成器问题

2024-05-13 10:44:32 发布

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

我相信我的生成器有问题,我不确定这是我的代码还是可能与我的编码环境有关(我使用的是Jupyter笔记本)

预期结果:

我想把这份名单翻过来:

ugh = [["hi","this"], ["is","annoying"], ["like...","really"], ["reallly","annoying"]]

进入字符串列表,如下所示:

["hi","this","is","annoying","like...","really","reallly","annoying"]

到目前为止,我已经尝试使用itertools.chainflatten()的变体,到目前为止,我的结果如下:

展平功能:

from collections import Iterable

def flatten(coll):
    for i in coll:
            if isinstance(i, Iterable) and not isinstance(i, basestring):
                for subc in flatten(i):
                    yield subc
            else:
                yield i

print(flatten(ugh))

结果:<;生成器对象在0x7f8ccf3c6250处展平>

Itertools:

print(list(itertools.chain(*sublist)) for sublist in ugh)

结果:<;0x7f8ccf3c6250处的生成器对象>

我非常感谢您的帮助,因为当我搜索任何一个输出时,都不会得到任何结果


Tags: inchainforishithisiterablelike
2条回答

升级的最好方法,通常更快、更有效,就是使用列表理解。我使用了嵌套的,因为列表中有一个列表

[val for sublist in ugh for val in sublist]

让我知道它是否有效

import numpy as np
ugh = [["hi","this"], ["is","annoying"], ["like...","really"], ["reallly","annoying"]];
ugh = np.array(ugh);
flatten_ugh = ugh.flatten();
print(flatten_ugh);

相关问题 更多 >