gpt4 book ai didi

详解python数据结构和算法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解python数据结构和算法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.删除序列相同元素并保持顺序 。

如果仅仅就是想消除重复元素,通常可以简单的构造一个集合,利用集合之间元素互不相同的特性就可以消除重复,但是这种方法生成的结果中元素的位置会被打乱。下面是我们的解决方案:

python" id="highlighter_89183">
?
1
2
3
4
5
6
7
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之后的语句开始执行.

使用示例:

详解python数据结构和算法

注:我们构造的dedupe函数返回的是生成器对象,需要用list转化成可直接输出的列表.

该函数也可以用来文件去除重复行:

?
1
2
3
with open ( 'my.log' , 'r' ) as f:
   for item in dedupe(f):
     print (item)

 2.过滤元素序列 。

问题--------你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列 。

方法一:最简单的过滤序列元素的方法就是使用列表推导。比如我们想从下列列表中提取正数:

?
1
2
3
mylist = [ 1 , 4 , - 5 , 10 , - 7 , 2 , 3 , - 1 ]
newlist = [n for n in mylist if n > 0 ]
print (newlist)

方法二:生成器迭代 。

使用列表推导的一个潜在缺陷就是如果输入非常大的时候会产生一个非常大的结果集,占用大量内存。 如果你对内存比较敏感,那么你可以使用生成器表达式迭代产生过滤的元素.

?
1
2
3
4
mylist = [ 1 , 4 , - 5 , 10 , - 7 , 2 , 3 , - 1 ]
pos = (n for n in mylist if n > 0 )
print (pos)
print ( list (pos)) #迭代器不可以直接输出,需要转换成list才可以看到结果

运行结果:

详解python数据结构和算法

方法三:过滤规则比较复杂,不能简单的在列表推导或者生成器表达式中表达出来时需要考虑使用内建的filter函数。这时候你可以将过滤代码放到一个函数中, 然后使用内建的 filter() 函数。示例如下:

?
1
2
3
4
5
6
7
8
9
10
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数据结构和算法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com