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模块都是自己的语法(详解Python_shutil模块)
- python如何解压加密zip文件(python读取有密码的zip压缩文件实例)
- pythonpandas数据类型(详解Python数据分析--Pandas知识点)
- python随机生成时间戳(python时间序列按频率生成日期的方法)
- python常用的属性和方法(Python进阶之@property动态属性的实现)
- pyqt一键部署python环境(python使用PyQt5的简单方法)
- python获取当前时间戳(Python基于datetime或time模块分别获取当前时间戳的方法实例)
- python基础编程函数参数(详解Python 函数如何重载?)
- python读写文件实验心得(Python文件读写常见用法总结)
- python环境怎么安装pip(python2.7 安装pip的方法步骤管用)
- python中内存管理机制(Python中整数的缓存机制讲解)
- python网页自动化selenium(python利用selenium进行浏览器爬虫)
- python计算csv的行数(对Python 多线程统计所有csv文件的行数方法详解)
- python抖音视频收集(python制作抖音代码舞)
- python无法拒绝的表白代码教程(很酷的python表白工具 你喜欢我吗)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
热门推荐
- apache配置讲解(apache中封IP的实现方法)
- linux服务器安装宝塔(linux宝塔面板安装Zabbix监控服务器资源使用状态)
- mysql字符类型长度限制
- linux nginx部署前端项目(nginx部署多前端项目的几种方法)
- 常见的数据库及数据库相关技术
- python怎么自动生成报告(python根据文章标题内容自动生成摘要的实例)
- wdc真正的底层公链(LiteSpeed服务器用htaccess的防盗链代码)
- xp系统如何设置ftp服务器(打开windowXP的21端口即用winxp架设ftp服务器)
- dedecms中如何设置推荐文章(实现dedecms友情链接分栏目调用的方法图)
- laravel如何设置默认模块(Laravel框架控制器的middleware中间件用法分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9