簡體   English   中英

用他們的最小值替換列表中的連續數字

[英]Replace consecutive numbers in list with their min

我有一個整數列表,其中一些是連續的。 我想用他們組的最小值替換連續的,或者刪除除每個組的最小值之外的所有這些。 例子:

my_list = [1,2,3,4,6,7,8,9,11]

result = [1,1,1,1,6,6,6,6,11]

甚至像這樣刪除它們:

result = [1,6,11]

對於第二種方式,

print([x for x in my_list if x-1 not in my_list])

為您提供前一個不在原始列表中的所有數字的列表

簡單的解決方案:

>>> from itertools import pairwise
>>> result = [lst[0]]
>>> for i, j in pairwise(lst):
...     if j - i != 1:
...         result.append(j)
...
>>> result
[1, 6, 11]

注意:在 Python 3.10 中引入了itertools.pairwise 如果您使用的是早期版本,您可以考慮自己實現pairwise或簡單地使用索引。

暫無
暫無

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

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