处理序列的几个小技巧:保持原序去重,命名切片以及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 ...
随机推荐
- 【Python爬虫】听说你又闹书荒了?豆瓣读书9.0分书籍陪你过五一
说明 五一将至,又到了学习的季节.目前流行的各大书单主打的都是豆瓣8.0评分书籍,却很少有人来聊聊这9.0评分的书籍长什么样子.刚好最近学了学python爬虫,那就拿豆瓣读书来练练手. 爬虫 本来思路 ...
- FP变更物料编码(增加尾缀)
FP物料编码增加尾缀的程序,标准物料编码是18位,目前程序中增加尾缀的有三种1.DUMMY 2.SP开头 3.P开头 4.C开头 5.BP对应处理程序如下:1.DUMMY SAP_MATE ...
- x64位windows 2003 server中“Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败”问题
给朋友看一个老asp网站图片不能上传问题,试过网上各种办法都提示: Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败 最终问题出在x6 ...
- a=a++问题引发的思考
使用javap命令解析出来的a=a++过程的字节码(int a=1; a=a++): 0: iconst_1 将数值1压入栈顶 1: istore_1 栈顶值1存入局部变量表的第一个slot中 2 ...
- Openssl dgst命令
一.简介 消息摘要可以对任意长度的消息产生固定长度(16或20个字节)的信息摘要,理论基于单向HASH函数,根据消息摘要无法恢复出原文,所以是安全的:消息原文和消息摘要是一一对应的,所以又被称作指纹. ...
- scala 排序
sortBy() 定义: def sortBy[B](fun: (A) =>B) 栗子1: val words = "the quick brown fox jumped over t ...
- android 的AlertDialog对话框
private int selectedFruitIndex = 0; private void showMsg2() {// Dialog alertDialog = new AlertDial ...
- Spring boot——logback.xml 配置详解(二)
阅读目录 1 根节点包含的属性 2 根节点的子节点 文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 回到顶部 1 根节点<config ...
- cpuinfo
在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢? 经过查看,我的开发机器是1个物理CP ...
- jQuery动画中stop()与 finish()区别
stop():接受三个参数,(要停止的动画名称:是否清空队列中的动画:是否当前动画立即完成) stop()相当于stop(false,false)表示停止执行当前动画,后续动画接着进行 stop(tr ...