python - 删除列表中的值,除了 python 中连续整数中的第一个和最后两个元素

标签 python python-3.x

例如,我的 list 是

my_list = [1,2,3,4,5,  9,10,11,12,13,14,  20,21,22,23,24,25,26,27]

我想将两个元素的第一个和最后一个边界保存在连续的值中。所以我需要得到的是:

output = [1,2,4,5,  9,10,13,14,  20,21,26,27]

我怎样才能简单或有效地得到这个结果?

最佳答案

使用more_itertools.consecutive_groups

import more_itertools as mit

my_list = [1,2,3,4,5,9,10,11,12,13,14,15]

x = [list(group) for group in mit.consecutive_groups(my_list)]

oputput = []
for i in x:
    temp = [i[0],i[1],i[-2],i[-1]]
    output.extend(temp)    

输出:

[1,2,4,5,9,10,14,15]

关于python - 删除列表中的值,除了 python 中连续整数中的第一个和最后两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058430/

相关文章:

python - 属性错误: 'AnonymousUserMixin' object has no attribute 'can'

python - 人口必须是一个序列或集合。对于字典,使用 list(d)

python - 检查 TimeDelta 对象是否等于特定时间

python - python 包中的函数如何映射到正确的文件名?

python - 给定经纬度,根据经纬度的 json 列表找到最近的位置

python - 如何在 pandas 数据框中保留分类变量的某些级别并将剩余设置为 "other"

python - 排列后如何打印彼此相邻的元组中的值?

python - 在 Python 中获取代码点的 Unicode 版本

Python 性能随着内存使用量的增加而降低

python - 如何从 numpy 矩阵中随机选择项目(以矢量化方式)?