簡體   English   中英

在列表理解中進行分配

[英]Make assignment in list comprehension

如何將此代碼移動到列表理解中

prev = 0
data = [1, 20, 40, 50, 100]
newlist = []
for x in data: 
    value = x - prev 
    prev = x 
    newlist.append(value) 

不使用prev變量,只需創建一個以 0 開頭的新列表。

[x-prev for prev, x in zip([0]+data, data)]

不過,您可能不應該將它用於大data ,因為它會生成一個全新的副本。 您可以使用 itertools.chain 使其更快:

[x - prev for prev, x in zip(chain([0], data), data)]

@Keatinge 的回答很好。 這是另一個不制作任何副本的版本。 從技術上講不是列表理解: *(...)使用內部生成器中的項目擴展列表文字。

[data[0], *(data[i + 1] - data[i] for i in range(len(data) - 1))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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