是否可以通過Python中的迭代器對函數進行單線調用?不帶塊的單線函數調用?
背景:
假設我想在目錄列表創建一個子目錄。傳統上,我會用列表解析來構建所需的子目錄路徑的列表:
subs = [os.path.join(root, "sub") for root in roots]
哪裏roots
是目錄列表。那我就必須創建一個for
塊叫os.mkdir()
:
for sub in subs:
os.mkdir(sub)
問:
是否有可能使用發電機來做到這一點?
我已經試過: os.mkdir(os.path.join(root, "sub") for root in roots)
但它拋出一個TypeError
說發電機是不能接受的。
你可以重寫你的循環作爲列表理解。但你不應該。因爲你不想創建一個新的列表。你正試圖在循環中執行一個命令。這就是正常的'for'陳述的目的。 – khelwood
單行:'for sub in subs:os.mkdir(sub)'。 –
@AshwiniChaudhary這並不能解決問題。在那之前可以執行'subs'仍然需要被做,我想不創建另一個列表對象。 – datta