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