簡體   English   中英

使用 itertools.groupby 返回最長的連續負數列表

[英]Return the longest list of consecutive negative numbers using itertools.groupby

鑒於系列:

series = [2, 6, 9, -1, 1, -3, -3, -3, 1,-4]

如何使用itertools.groupby返回列表[-3, -3, -3]

試:

from itertools import groupby
max((list(g) for k, g in groupby(series, key=lambda i: i < 0)), key=len)

返回:

[2, 6, 9]

提前致謝

你可以這樣做:

from itertools import groupby

series = [2, 6, 9, -1, 1, -3, -3, -3, 1, -4]
result = max((list(group) for key, group in groupby(series) if key < 0), key=len)

print(result)

Output

[-3, -3, -3]

您的代碼的問題是您在 groupby 中使用了錯誤的鍵key=lambda i: i < 0 ,如果鍵為正,只需過濾結果。

檢查你的k值是真還是假。

from itertools import groupby
series = [2, 6, 9, -1, 1, -3, -3, -3, 1,-4]
x = max([list(g) for k, g in groupby(series, key=lambda i: i < 0) if k == True ], key=len)
print(x)

暫無
暫無

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

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