python小技巧

python
1、拆箱:

a,b,c=1,2,3
a,b,c=[1,2,3]
a,(b,c),d=[1,[2,3],4]
#b为2,c为3
a,*b,c=[1,2,3,4,5]
#b为[2,3,4] 。仅支持py3

2、zip压缩与解压

 a = [1, 2, 3]
 b = ['a', 'b', 'c']
z = zip(a, b)
#(1, 'a'), (2, 'b'), (3, 'c')]
zip(*z)
#[(1, 2, 3), ('a', 'b', 'c')]

3、列表元素zip

a = [1, 2, 3, 4, 5, 6]
zip(*([iter(a)] * 2))
#[(1, 2), (3, 4), (5, 6)]
group_adjacent = lambda a, k: zip(*([iter(a)] * k))
group_adjacent(a, 3)
#[(1, 2, 3), (4, 5, 6)]

4、滑动取值

def n_grams(a, n):
     z = [iter(a[i:]) for i in range(n)]
     return zip(*z)

 a = [1, 2, 3, 4, 5, 6]
n_grams(a, 3)
#[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]

5、双向队列

Q = collections.deque()
Q.append(1)
Q.appendleft(2)
Q.extend([3, 4])
Q.extendleft([5, 6])
Q
#deque([6, 5, 2, 1, 3, 4])
Q.pop()
#4
Q.popleft()
#6

6、快速频数统计

A = collections.Counter([1, 1, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7])
A
#Counter({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})
A.most_common(3)
#[(3, 4), (1, 2), (2, 2)]

7、生成器

g = (x ** 2 for x in xrange(10))  
next(g)
#0
next(g)
#1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 起因 更多Python学习技巧:http://xuexi.jikexueyuan.com/course/3.htm...
    极客学院Wiki阅读 9,693评论 2 2
  • 编码 写入json文件时出现的编码问题和缩进问题 列表 子列表合并 匹配最相似的从一堆list中找一个与目标lis...
    Jlan阅读 1,066评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • 全新的笔记!为了不同手机能通用,用了这个新的账号开启我的股票作手之旅。此后我会适时记录。 这段时间我会以周为重点记...
    道二十三阅读 949评论 0 0
  • 今天晚上,儿子坐在床上玩着游戏,我走到他书桌前,翻看他的作业,结果却发现儿子的作业已经有好多天没动笔了,再看他写的...
    五月石榴红胜火阅读 1,566评论 0 0