处理序列的几个小技巧:保持原序去重,命名切片以及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 ...
随机推荐
- PLSQL result set exceeds the maximum size(100M)if necessary,you can explicitly confinue this query
在PL SQL 里执行一条语句,当反正信息达到2w条时,弹出如下内容:result set exceeds the maximum size(100M)if necessary,you can exp ...
- Java核心技术-泛型程序设计
使用泛型机制编写的代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性. 泛型对于集合类尤其有用 1 为什么要使用泛型程序设计 泛型程序设计意味着编写的代码可以 ...
- ssm 动态切换数据源
1,添加数据库配置 jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver #jdbc.url=jdbc:sqlserver://192.16 ...
- maven标签说明
<project xmlns="http://maven.apache.org/POM/4.0.0 " xmlns:xsi="http://www.w3.org/2 ...
- marioTcp
https://github.com/nicholaszj/marioTcp MarioTCP MarioTCP 是使用libevent模型来建立的一个性能强大的TCP服务器. 1:Getting S ...
- [Selenium]刷新页面 Refresh page
5 different ways to refresh a webpage using Selenium Webdriver Here are the 5 different ways, usin ...
- About Game Controllers
[About Game Controllers] Game Controller(GC),框架从iOS 7和OS X v10.9开始加入,用于便捷使用控制器(手柄). Once discovered, ...
- 使用cmd命令登录mysql数据库时报2013-Lost connection to MYSQL server at 'waiting for initial communication packet',system error:0
[错误内容]:SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packe ...
- C# Redis Server分布式缓存编程(一)(转)
出处:http://www.cnblogs.com/davidgu/p/3262571.html 这篇文章我将介绍如果用最简洁的方式配置Redis Server, 以及如何使用C#和它交互编程 一. ...
- OpengGL中图形绘制先后问题
OpengGL中图形绘制先后问题 在opengl中,场景绘制总有个先后的顺序,也有个程序先后的问题,图形程序在前在后,对最终的图形的影响如何? (1)设置图中的点(蓝色)与线条(浅蓝)z分量都是0,如 ...