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