-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:另外,如果實際代碼將文件讀入字符串列表中,請考慮使用生成這些內容的生成器,而不必將所有內容都保存在內存中。 –