繁体   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