-1
正如我对它的理解一样,itertools.chain.from_iterable用于组合两个或更多返回iterables的东西,即使用yield关键字的东西,并且在使用时它们具有内存效率。链接列表是否提供任何好处?
我有这个代码,我试图破译。其他人写了它。
all_rows = []
with open(__file__, 'rt') as reader:
for row in reader:
all_rows.append(row)
magic = list(itertools.chain.from_iterable(all_rows))
for line in magic:
print(line)
那岂不是更好地只使用ALL_ROWS直接,因为它已经是一个内存中的数据结构?
拍摄,我的例子必须有一个错误。无论如何,实际代码将文件读入字符串列表,然后调用list(itertools.chain.from_iterable(all_rows)),然后在for-in循环中遍历行。 – MatthewMartin
@MatthewMartin:这听起来很浪费,为什么在迭代循环时建立一个列表?如果你不需要随机访问,那么不要调用'list()',只是迭代。 –
@MatthewMartin:另外,如果实际代码将文件读入字符串列表中,请考虑使用生成这些内容的生成器,而不必将所有内容都保存在内存中。 –