处理序列的几个小技巧:保持原序去重,命名切片以及Counter类
一. 去重并保持原来元素的顺序
def dedupe(items):
h = []
for item in items:
if item not in h:
h.append(item)
return h #a = [, , , , , , , ]
a = [ {'x':, 'y':}, {'x':, 'y':}, {'x':, 'y':}, {'x':, 'y':}]
b = dedupe(a)
print(b)
二. 命名切片
假定你有一段代码要从一个记录字符串中几个固定位置提取出特定的数据字段,用切片取出想要的字符
record = '....................100 .......513.25 ..........'
cost = int(record[:]) * float(record[:])
有时候代码量比较多的话,直接写切片不能清楚它的含义;为了便于理解,可以用内置函数slice()把切片命名
SHARES = slice(, )
PRICE = slice(, )
cost = int(record[SHARES]) * float(record[PRICE])
如果你有一个切片对象 a,你可以分别调用它的 a.start , a.stop , a.step 属性来获取更多的信息
>>> a = slice(, , )
>>> a.start >>> a.stop >>> a.step
三. 找出序列中出现最多次数的元素,使用collections模块中的Counter类来处理
>>> from collections import Counter
>>> words = ['look', 'into', 'my', 'eyes', 'you', 'will', 'see', 'my', 'eyes', 'in', 'your', 'eyes']
>>> morewords = ['why','are','you','not','looking','in','my','eyes']
>>> mycount1 = Counter(words)
>>> mycount2 = Counter(morewords) # Counter对象就是一个字典,将每个单词和出现次数作为一个键值对
>>> mycount1
Counter({'eyes': , 'my': , 'in': , 'will': , 'look': , 'into': , 'you': , 'see': , 'your': })
>>> mycount2
Counter({'looking': , 'are': , 'not': , 'in': , 'eyes': , 'you': , 'why': , 'my': })
>>> mycount1['eyes'] >>> mycount1['eyes'] + # 取出出现次数最多的2个单词,返回一个列表
>>> top_two = mycount1.most_common()
>>> top_two
[('eyes', ), ('my', )] #Counter对象可以进行加减运算
>>> c = mycount1 + mycount2
>>> c
Counter({'eyes': , 'my': , 'in': , 'you': , 'looking': , 'your': , 'look': , 'will': , 'see': , 'are': , 'not': , 'into': , 'why': })
>>> d = mycount1 - mycount2
>>> d
Counter({'eyes': , 'your': , 'look': , 'into': , 'will': , 'my': , 'see': })
处理序列的几个小技巧:保持原序去重,命名切片以及Counter类的更多相关文章
- winform之权限判断小技巧
每个页面都要判断用户是否登陆并且判断用户是否拥有相应的权限,,以至于每个页面都要判断Session["user"]是否为空,后期不好维护 小技巧: 因为每个页面都继承与Page类, ...
- STM32之ADC+步骤小技巧(英文)
神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞 ...
- RS开发中的一些小技巧[不定期更新]
从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧, ...
- UVa140 Bandwidth 小剪枝+双射小技巧+枚举全排列+字符串的小处理
给出一个图,找出其中的最小带宽的排列.具体要求见传送门:UVa140 这题有些小技巧可以简化代码的编写. 本题的实现参考了刘汝佳老师的源码,的确给了我许多启发,感谢刘老师. 思路: 建立双射关系:从字 ...
- Python入门:数据结构的3个小技巧
这是关于Python的第11篇文章,主要介绍下数据结构的3个小技巧. 排序: 使用sorted函数实现排序. sorted函数按照长短.大小.英文字母的顺序给每个列表的元素进行排序.这个函数经常在数据 ...
- IDEA Intellij中vim插件使用小技巧
在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...
- java--内存管理的几点小技巧
今天看一本书,书上提到了内存泄露,后面也提到了内存管理的小技巧,在这里记下来,以免以后忘记. 1.尽量使用直接量.比如:String str = "I can play!";而不是 ...
- 小技巧(updating)
小技巧 我们要算一个点集中所有点到另一个点集中所有点的一些量的时候,可以建立一个超级源点和超级汇点,从多->多变成单->单 整体二分的时候,操作要可以撤销,才能保证复杂度,每一层到左边区间 ...
- Sort和UnSort的小技巧
Sort和UnSort的小技巧: 记录sortidx,对sortidx再从小到大排序就可以得到用于还原的unsortidx. 对于序列A: sort_idx = np.argsort(A) un_so ...
随机推荐
- 虚拟机Mac系统中VMware_tools安装和vm共享文件夹的设置(转)
原文来源: http://wenku.baidu.com/link?url=KRgfG40q2SEwZfde9xA7HVKjCsFBkMcf83tyellnzsHYZ_ErU1hWpVmTHYZem0 ...
- solr dismax与edismax的参数列表
dismax q.alt qf (Query Fields) mm (Minimum 'Should' Match) pf (Phrase Fields) ps (Phrase Slop) qs (Q ...
- 9-eclispe中右键BuildPath没有了
Eclipse 右上角的代码视图,选择Java就好了!
- Financial Information Exchange (FIX) Protocol Interview Questions Answers[z]
What do you mean by Warrant?Warrant is a financial product which gives right to holder to Buy or Sel ...
- 获取iPod library中的媒体文件
[获取iPod library中的媒体文件] The Media Player framework provides facilities for playing movie, music, audi ...
- UVa 1612 Guess (贪心+题意)
题意:有 n 位选手参加编程比赛.比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交的越早,预得分越大). 接下来 是系统评测.如果某道题未通过测试,则 ...
- windows7文件夹怎样默认图片大图显示?
先打开一个含有图片的文件夹,在文件夹空白处右键选择属性,打开自定义选项卡. 确定自定义选项卡 显示的是:“优化此文件夹:图片”. 然后,选择:组织--文件夹和搜索选项--查看--文件夹视图,应用到文件 ...
- Hello_Depth_Perception 任务二:Project Tango采集深度感知数据
Java API Depth Perception Tutorial深度感知教程 Configuration 配置信息 In order to use depth perception, your T ...
- B-spline Curves 学习前言与动机(1)
B-spline Curves 学习之前言 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:http:// ...
- polymer技巧
1.添加一个div元素 我们完全可以自己造一个这样的东西出来,比如下面例子我们给 div 元素添加一个 is="demo-test" <script> var Poly ...