簡體   English   中英

將列表理解循環轉換為常規for循環,而無需創建無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM