Python不像想象那么简单!学会这些小技巧,离精通更进一步( 二 )


本文插图
7.Itertools
如果深入学习Python , 那你肯定要熟悉itertools 。 itertools是标准库中的一个模块 , 它可以不断地解决迭代问题 。 它不仅使编写复杂循环大幅度变容易 , 而且还使代码更简洁快速 。 有数百种Itertools的使用示例 , 来看看其中一个:
c = [[1, 2], [3, 4], [5, 6]] # Let's convert this matrix to a 1 dimensional list. import itertools as it newlist = list(it.chain.from_iterable(c))
8.分组相邻列表
在for循环中 , 对相邻循环进行分组当然很容易 , 特别是使用zip() , 但这肯定不是最好的方法 。 为了更轻松便捷地实现这一点 , 可以用zip编写一个lambda表达式 , 该表达式将对相邻列表进行分组 , 如下所示:
a = [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)] group_adjacent(a, 2) [(1, 2), (3, 4), (5, 6)] group_adjacent(a, 1)
Python不像想象那么简单!学会这些小技巧,离精通更进一步
本文插图
9.计数器
集合也是模块中很好的标准库 , 这里向大家介绍的是集合中的计数器 。 使用计数器 , 可以轻松获得一个列表的计数 。 这对于获取数据中的值总数、数据的空计数 , 以及查看数据的唯一值非常有用 。
“为什么不直接使用Pandas呢?”使用Pandas来实现这一点无疑会困难得多 , 而且这只是在部署算法时需要添加到虚拟环境中的另一个依赖项 。 另外 , Python中的计数器类型有很多Pandas系列没有的特性 , 这使其在某些情况下更有用 。
Python不像想象那么简单!学会这些小技巧,离精通更进一步
本文插图
图源:unsplash
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(1) [(3, 4)] A.most_common(3) [(3, 4), (1, 2), (2, 2)]
10.出队
如下所示 , 出队能让代码非常整洁:
import collections Q = collections.deque() Q.append(1) Q.appendleft(2) Q.extend([3, 4]) Q.extendleft([5, 6]) Q.pop() Q.popleft() Q.rotate(3) Q.rotate(-3) print(Q)
Python不像想象那么简单!学会这些小技巧,离精通更进一步
本文插图
这些是笔者一直爱用的Python技巧 , 都非常通用和实用 , 实践中总有机会能用到 。 Python的标准库函数工具箱变得越来越多样 , 还有很多笔者也没听说过的工具 。 学无止境 , 这多么令人兴奋!
Python不像想象那么简单!学会这些小技巧,离精通更进一步
本文插图
留言点赞关注
我们一起分享AI学习与发展的干货
如转载 , 请后台留言 , 遵守转载规范


推荐阅读