昨天在群里看见一个Python的问题,趁着今天有那么一点点时间,就想把这个题目分享出来,让大家一起解决。毕竟三个臭皮匠,赛过诸葛亮。

原始数据如下:

1

origin_lst = [0, 0, 1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9, 4, 4]

期望得到的结果是:

1

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4]

实现过程

方法一

这里【老松鼠】给了一份代码,如下所示:

Python学习交流Q群:660193417####
import itertools
origin_lst = [0, 0, 1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9, 4, 4] final_lst = [x[0] for x in itertools.groupby(origin_lst)]
# final_lst = [k for k, g in itertools.groupby(origin_lst)]
print(final_lst)

方法二

后来【瑜亮老师】也给了一份代码,使用列表推导式,如下所示:

origin_lst = [0, 0, 1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9, 4, 4]

res = [origin_lst[i] for i in range(len(origin_lst)) if i == 0 or origin_lst[i] != origin_lst[i - 1]]
print(res)

运行结果如下图所示:

顺利的解决了问题。

方法三

后来给了一个基础的方法,如下所示:

origin_lst = [0, 0, 1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9, 4, 4]

result = [origin_lst[0]]
for i in range(1, len(origin_lst)):
if origin_lst[i] != origin_lst[i-1]:
result.append(origin_lst[i])
print(result)

运行结果如下图所示:

方法四

后来还给了一个生成器的方法,如下所示:

Python学习交流Q群:660193417####
origin_lst = [0, 0, 1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9, 4, 4] def del_adjacent(iterable):
prev = object()
for item in iterable:
if item != prev:
prev = item
yield item result = list(del_adjacent(origin_lst))
print(result)

运行结果如下所示:

方法五

后来【Chloe】自己也给了一个enumerate方法,代码如下所示:

origin_lst = [0, 0, 1, 2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 9, 4, 4]
lst_final = []
for index, val in enumerate(origin_lst):
if val != origin_lst[index - 1]:
lst_final.append(val)
print(lst_final)

运行结果如下图所示:

最后

事实证明,条条大路通罗马,方法还是很多的!以后大家在遇到问题的时候也可以试着去打开自己的思维,或许可以得到更多的解决方法。

最新文章

  1. MathType for mac 能够实现在Word里面双击公式编辑的方法
  2. 通过浏览器https能够访问SVN,但eclipse SVN,tortoiseSVN始终连接不上SVN的问题解决方案
  3. linux学习笔记——基础命令
  4. 关于python的最大递归层数详解
  5. Autodesk招聘开发咨询顾问(北京或上海),需要内推的扔简历过来啊
  6. uml与数据库设计
  7. php快递单号查询源码
  8. C++中四种类型转换方式
  9. Nlog从下载到使用例子
  10. HDOJ-1018 Big Number
  11. hibernate的映射关系之一对多
  12. 解决在onCreate()过程中获取View的width和Height为0的方法
  13. Future of Future
  14. react 报错的堆栈处理
  15. 如何改变vim中的光标形状 : 在插入状态下显示为 beam?而在 其他 状态下 为 block?
  16. python自动化,使用unittest对界面操作,读取excel表格数据输入到页面查询结果,在把结果保存到另外一张excel中
  17. Android CPU类型及预定义的宏
  18. 【JVM】6、聊聊JVM常用参数设置
  19. dns 安全
  20. OpenH264编译ffmpeg android

热门文章

  1. Java语言学习day26--7月01日
  2. Docker极简入门:使用Docker-Compose 运行网站浏览量统计Demo
  3. .NET Core企业微信网页授权登录
  4. 解决go-micro与其它gRPC框架之间的通信问题
  5. Linuxshell脚本-格式-变量-条件测试
  6. Golang(go语言)开发环境配置
  7. burp通过条件竞争上传文件
  8. C++实例2--职工管理系统
  9. 5.文件共享总结中篇-Linux服务器文件共享
  10. 图文详解:小白也能看懂的 Kubernetes