[英]Convert a list comprehension loop into a regular for loop without creating an infinite loop
我正在嘗試轉換此列表理解:
cfg = []
...
cfg = [conf + function1(s) for s in cfg]
到正規多for
,因為它需要包括更多的東西進去:
cfg = []
...
for s in cfg:
cfg.append(conf + function1(s))
但是在第二種情況下,將創建無限循環。
列表理解與普通for
循環的等效性是什么?
您可以做兩件事:
預先創建cfg
的副本:
for s in cfg[:]:
或追加到新列表並替換舊列表:
new_cfg = [] for s in cfg: new_cfg.append(...) cfg = new_cfg
第二個選項與列表理解最接近,因為它在重新綁定之前也會先創建一個新列表。 第二個選項替換了舊的cfg
列表值。
但是,您的full for
循環等效於第一個選項,因為該選項保留了 cfg
的舊值 ,並附加了新值。 您的列表理解從未做到過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.