问题描述
我相信生成器存在问题,我不确定这是我的代码还是与我的编码环境有关(我正在使用Jupyter Notebook)
所需结果:
我希望列出以下列表:
ugh = [["hi","this"],["is","annoying"],["like...","really"],["reallly","annoying"]]
进入字符串列表,如下所示:
["hi","this","is","annoying","like...","really","reallly","annoying"]
到目前为止,我一直尝试同时使用itertools.chain
和flatten()
的变体形式,到目前为止,我的结果如下:
平铺函数:
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))
结果:
Itertools:
print(list(itertools.chain(*sublist)) for sublist in ugh)
结果:
我非常感谢您的帮助,因为当我搜索任何一个输出时,都没有结果。
解决方法
import numpy as np
ugh = [["hi","this"],["is","annoying"],["like...","really"],["reallly","annoying"]];
ugh = np.array(ugh);
flatten_ugh = ugh.flatten();
print(flatten_ugh);
,
最好的方式,通常也更快,更有效-使用列表理解。我使用了一个嵌套列表,因为列表中有一个列表。
[val for sublist in ugh for val in sublist]
让我知道它是否有效。