0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货:一些Python有用的小技巧,离精通更进一步

如意 来源:读芯术 作者:读芯术 2020-07-05 10:25 次阅读

Python看起来似乎是一种任何人都可以学习的简单语言,但实际上,学会不等于精通,Python的“后劲儿”超乎我们的想象,它容易入门却很难掌握。在Python中,一个通常有多种处理方法,但很容易出错的地方很多;或者仅仅因为不知道模块的存在,你就得重新创建标准库,这很浪费时间。

Python标准库是一个巨大的野兽,它的生态系统绝对是庞大的。虽然Python模块可能有200万千兆字节,好在有一些使用技巧存在,我们可以用Python中与科学计算相关的标准库和包来学习。

1.反转字符串

虽然看似是很基础的操作,但是用char循环来反转字符串可能会非常繁琐麻烦。幸运的是,Python包含了一个简单的内置操作来准确地执行这个任务,我们只需访问字符串上的索引::-1。

a = “!dlrow olleH”

backward = a[::-1]

干货:一些Python有用的小技巧,离精通更进一步

2.Dims作为变量

在大多数语言中,为了将数组放入一组变量中需迭代循环值,或按位置访问暗点,如下所示:

firstdim = array[1]

然而,在Python中有一种更好更快的方法。为了将一列值改为变量,可以简单地将变量名设置为与数组长度相同的数组:

array = [5, 10, 15, 20]

five, ten, fift, twent = array

干货:一些Python有用的小技巧,离精通更进一步

3.生成器的next()迭代

编程中的大多数正常情况下,可以访问一个索引,并使用计数器获取位置数字,计数器将只是一个值,添加到:

array1 = [5, 10, 15, 20]

array2 = (x ** 2 for x in range(10))

counter = 0for i in array1:# This code wouldn‘t work because ’i‘ is not in array2.

# i = array2[i]

i = array2[counter]

# ^^^ This code would because we areaccessing the position of i

我们也可以用next()代替它。Next使用一个迭代器,该迭代器将当前位置存储在内存中,并在后台迭代列表:

g = (x ** 2 for x in range(10))

print(next(g))

print(next(g))

4.智能拆包

迭代地解压值可能会非常耗费时力,Python中有几种不错的方法可以用来解压列表的方法。其中一个是*,它将填充未分配的值并将它们添加到变量名下的新列表中。

a, *b, c = [1, 2, 3, 4, 5]

干货:一些Python有用的小技巧,离精通更进一步

5.列举

不了解列举那可不太行。列举可以获取列表中某些值的索引,在数据科学中使用数组而不是数据帧时,这就特别有用:

for i,w in enumerate(array):

print(i,w)

干货:一些Python有用的小技巧,离精通更进一步

6.命名切片

Python中,分割列表非常简单,各式各样优秀工具都能做到。特别好的一点是,它还能够给列表命名,这对于Python中的线性代数特别有用:

a = [0, 1, 2, 3, 4, 5]

LASTTHREE = slice(-3, None)

slice(-3, None, None)

print(a[LASTTHREE])

干货:一些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系列没有的特性,这使其在某些情况下更有用。

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的标准库函数工具箱变得越来越多样,还有很多笔者也没听说过的工具。学无止境,这多么令人兴奋!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 字符串
    +关注

    关注

    1

    文章

    575

    浏览量

    20475
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84401
  • 标准库
    +关注

    关注

    0

    文章

    31

    浏览量

    7420
收藏 人收藏

    评论

    相关推荐

    【OK210申请】嵌入式进一步学习(想试着做个简单的平板玩玩)

    借这个机会,申请这块开发版,便于日常学习,而且我即将大四了,希望用这块开发版能更进一步的学习,则方便之后的课设,二则便于找工作,三则嵌入式也是自己敢兴趣。衷心希望能获得这次机会,谢谢。项目描述:之前
    发表于 06-24 17:06

    E4406A达到adc对齐时不会更进一步

    你好E4406A有问题----当我启动时 - 设备按我的意愿启动自动对齐,但是当它达到adc对齐时它不会更进一步。根本没有消息。可以用abort终止它,并且分析仪似乎正常工作---- ??我可以用
    发表于 12-28 16:06

    如何让计算机视觉更进一步接近人类视觉?

    如何让计算机视觉更进一步接近人类视觉?
    发表于 06-01 06:27

    进一步提高UPS电源的可靠性

    及设备用电安全的需要,更进一步提高电源的可靠性,及时发现供电隐患,提高设备的运行寿命,对电源进行在线管理已经成为普遍的需求。针对早期的UPS电源的RS232标准,已经无法满足目前计算机硬件及软件技...
    发表于 12-28 08:05

    天齐锂业年产2万吨碳酸锂工厂项目的实施 2020年实现10万吨目标更进一步

    本次年产2万吨碳酸锂工厂项目的实施,将让天齐锂业2020年实现10万吨锂化工产品产能目标更进一步
    的头像 发表于 01-05 09:18 6432次阅读

    如何从工业4.0更进一步转向工业5.0?

    工业4.0能带来自动化和前所未有的生产力水平,许多公司现已采用物联网(IoT)、人工智能(AI)、大数据、云端运算及先进机器人等技术。然而,许多处于技术前沿的公司已更进一步转向工业5.0。
    发表于 07-09 09:18 1297次阅读

    提速降费政策更进一步 取消流量“漫游”费为5G铺路

    5G时代正从规划走向现实,对于运营商而言,进一步降低流量资费,也是为5G网络的逐步推广铺路。
    的头像 发表于 05-10 14:32 5926次阅读

    Oculus Quest VR头盔获得FCC认证 意味着距离上市更进一步

    emissions)产品的安全性,以及是否符合法规。支持无线电、WiFi、远红外等技术的产品必须在发售前获得FCC认证,获得认证意味着距离上市更进一步
    发表于 12-25 14:01 3055次阅读

    缩短交互路径 智能家居产品或者全屋智能的体验将更进一步

    通过模组把多种传感、碎片数据、AI算法和自控技术深度结合,或许能让智能家居产品或者全屋智能的体验更进一步
    发表于 04-24 15:16 943次阅读

    智能家居交互方向或是无感化 全屋智能的体验将更进一步

    通过模组把多种传感、碎片数据、AI算法和自控技术深度结合,或许能让智能家居产品或者全屋智能的体验更进一步
    发表于 04-26 08:48 1357次阅读

    华为推出新功能,鸿蒙系统将更进一步

    近日,华为推出新功能,鸿蒙OS更进一步。我们都知道,鸿蒙OS已经发布段时间了,近日华为升级了项新功能,这也意味着鸿蒙OS更近一步
    的头像 发表于 10-31 16:54 3850次阅读

    Type-C接口需求的增加,使得USB PD实现进一步扩增

    USB PD(电力传输)控制IC配合Type-C接口之需求2017年有望更进一步扩增,熟悉半导体业者表示,2017年智能型手机市场波动较大,外传苹果(Apple)大改款iPhone除了快充功能外,也将导入无线充电。
    发表于 12-13 13:59 794次阅读

    更进一步学习MySQL

    138 张图带你 MySQL 入门 中主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为个合格的开发人员,你还要具备一些更高
    的头像 发表于 09-24 16:04 1611次阅读
    <b class='flag-5'>更进一步</b>学习MySQL

    【转载】更进一步的了解Keil Flash的下载算法

    【转载】更进一步的了解Keil Flash的下载算法
    发表于 11-26 16:36 1次下载
    【转载】<b class='flag-5'>更进一步</b>的了解Keil Flash的下载算法

    荣耀Magic4系列3月17日发布会,隐私保护更进一步

    作为以“每处,更进一步”为极致追求的荣耀新代智慧旗舰,荣耀Magic4系列在性能、影像、显示、安全等维度都实现了全面进阶,其搭载的全新升级多主摄融合计算摄影系统、首次让手机屏幕同时支持LTPO
    的头像 发表于 03-14 13:09 2518次阅读
    荣耀Magic4系列3月17日发布会,隐私保护<b class='flag-5'>更进一步</b>