python数据结构全攻略(详解python数据结构和算法)
类别:脚本大全 浏览量:2423
时间:2021-10-21 07:17:58 python数据结构全攻略
详解python数据结构和算法1.删除序列相同元素并保持顺序
如果仅仅就是想消除重复元素,通常可以简单的构造一个集合,利用集合之间元素互不相同的特性就可以消除重复,但是这种方法生成的结果中元素的位置会被打乱。下面是我们的解决方案:
|
def dedupe(items, key = none): seen = set () for item in items: val = item if key is none else key(item) if val not in seen: yield item seen.add(val) |
主要思想就是构造一个集合,然后遍历该列表,如果当前元素不存在集合中就将该元素返回。
yiled时python中构造生成器的关键字。碰到yiled就返回该变量,下一次则从yiled之后的语句开始执行。
使用示例:
注:我们构造的dedupe函数返回的是生成器对象,需要用list转化成可直接输出的列表。
该函数也可以用来文件去除重复行:
|
with open ( 'my.log' , 'r' ) as f: for item in dedupe(f): print (item) |
2.过滤元素序列
问题--------你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列
方法一:最简单的过滤序列元素的方法就是使用列表推导。比如我们想从下列列表中提取正数:
|
mylist = [ 1 , 4 , - 5 , 10 , - 7 , 2 , 3 , - 1 ] newlist = [n for n in mylist if n > 0 ] print (newlist) |
方法二:生成器迭代
使用列表推导的一个潜在缺陷就是如果输入非常大的时候会产生一个非常大的结果集,占用大量内存。 如果你对内存比较敏感,那么你可以使用生成器表达式迭代产生过滤的元素。
|
mylist = [ 1 , 4 , - 5 , 10 , - 7 , 2 , 3 , - 1 ] pos = (n for n in mylist if n > 0 ) print (pos) print ( list (pos)) #迭代器不可以直接输出,需要转换成list才可以看到结果 |
运行结果:
方法三:过滤规则比较复杂,不能简单的在列表推导或者生成器表达式中表达出来时需要考虑使用内建的filter函数。这时候你可以将过滤代码放到一个函数中, 然后使用内建的 filter() 函数。示例如下:
|
values = [ '1' , '2' , '-3' , '-' , '4' , 'n/a' , '5' ] def is_int(val): try : x = int (val) return true except valueerror: return false ivals = list ( filter (is_int, values)) print (ivals) # outputs ['1', '2', '-3', '4', '5'] |
以上所述是小编给大家介绍的python数据结构和算法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://blog.csdn.net/goodxin_ie/article/details/89322506
您可能感兴趣
- python 微信发天气信息(python微信聊天机器人改进版定时或触发抓取天气预报、励志语录等,向好友推送)
- python条形码识别(python3转换code128条形码的方法)
- python处理各种xml文件(Python使用sax模块解析XML文件示例)
- python标准库操作键盘(Python中捕获键盘的方式详解)
- python实例教程(Python魔法方法详解)
- python3下urllib案例(URL Rewrite Module 2.1 URL重写模块规则写法)
- python初学篇元组(元组列表字典莫烦python基础)
- python类中的数据封装(基于python生成器封装的协程类)
- python最基本的编程工具(5款Python程序员高频使用开发工具推荐)
- python解析视频源码(基于python实现高速视频传输程序)
- ubuntu python3.7安装(详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本)
- python下的sql处理(python中aioysql异步操作MySQL的方法)
- python的turtle库怎么进入(python的turtle库使用详解)
- python编程将一个三位数反序输出(python实现整数的二进制循环移位)
- python发送微信消息脚本(python实现给微信指定好友定时发送消息)
- python3简单编程(Python3.5面向对象编程图文与实例详解)
- 精英律师 廖佳敏封印恋情曝光,顾婕马失前蹄 你个老不死的(廖佳敏封印恋情曝光)
- 以家人之名广受好评,剧情生动引起观众共鸣,演员张新成圈粉无数(以家人之名广受好评)
- 三兄妹感情再遇波折,人设接连崩塌 《以家人之名》剧情猜不透(三兄妹感情再遇波折)
- 《小敏家》金波想要复婚 这只是他圈套的第1步,更可恶的在后面(小敏家金波想要复婚)
- 小敏家 剧情离谱一锅乱炖,但他们俩绝对是这部剧的一大 亮点(剧情离谱一锅乱炖)
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
热门推荐
- dedecms安装与配置详解(LuManager服务器管理软件安装DEDECMS软件图文教程)
- udp 常用端口(UDP DUP超时UPD端口状态检测代码示例)
- html5实时通讯(使用Html5 Stream开发实时监控系统)
- python生成文本文件(python+os根据文件名自动生成文本)
- centos安装php5.6(Centos7 Yum安装PHP7.2流程教程详解)
- flow布局(详解为什么设置overflow为hidden可以清除浮动带来的影响)
- docker怎么增加端口(docker 添加端口及获取dockerfile的方法)
- nginx-rtmp-module 配置(Nginx搭建rtmp直播服务器实现代码)
- mysql数据表怎么复制(MySQL 复制表的方法)
- dedecms制作的网站如何发布(DedeCms后台添加编辑文章空白的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9