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

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

3天内不再提示

python的这些骚操作,你都了解了吗?

lviY_AI_shequ 来源:数据科学杂谈 2020-05-12 09:40 次阅读

随着深度学习机器学习等技术的火热发展,python 作为一种面向对象的动态类型语言也跟着火了起来。不少计算机科班出身的同学,在大学期间学习的多是 C++java,虽然转向 Python 难度并不大,但是有些 Python 使用的小技巧,由于受限于 C++和 java 思维的限制,可能不会往那方面去想(毕竟当我知道了一些 Python 的技巧之后,直接惊叹“卧槽,还能这样搞?!”)

元素互换

之前,我们在给 a 和 b 交换值时,通常的操作是:

a = 10b = 5temp = aa = bb = temp

Python 将这一操作简单化了

a = 10b = 5a,b = b,a

列表解析

列表解析是 Python 迭代机制的一种骚操作。有这样一个任务,给定一个由正整数组成的 list,然后删除里面的偶数。比如a = [1,2,3,4,5,6,8],注意这里我很骚的取了[1,2,3,4,5,6,8]而不是[1,2,3,4,5,6,7]。你会怎么做?

a = [1,2,3,4,5,6,8]for item in a: if item%2==0: a.remove(item)

输出是[1,3,5,8],并没有成功,是不是?如果你拿[1,2,3,4,5,6,7]作为例子,返回的结果确实是你想要的结果,但是那只是巧了。

python 怎么做呢?

a = [1,2,3,4,5,6,8]a = [item for item in a if item%2 != 0]

是不是骚的很?

Counter

from collections import Countera = ['a', 'a', 'a', 'b', 'b', 'c']ptiny(dict(Counter(a)))

输出为:

{'a': 3, 'b': 2, 'c': 1}

Counter 可以帮助我们自动的去统计一个 list 中各个元素的个数。这个在哪里常用呢?在我们 NLP 中统计词频时会经常用到,至少笔者是喜欢用这个函数的。

zip 函数

先上代码:

a = [1,2,3]b = ['a','b','c']for x, y in zip(a,b): print (x, y)

输出为

1 a2 b3 c

这个有什么用呢?在用 Python 做深度学习或机器学习时,需要构造训练样本和标签,那么我们有时可能会逐条获取一条训练数据,通过迭代 zip,就能一条一条的成对取出数据了。当然了,zip()中可以添加任意多个可迭代的元素,不仅仅限于例子中的两个。

exec

这是我接触 Python 以来,见到的最骚最骚的操作了,而且是我在学习 java 时就梦寐以求的操作:我希望我能动态输入一段代码(字符串),然后程序可以运行之。学过 java 的人都知道,这是不行的,但是尼玛 python 就行。

code = """from collections import Countera = ['a', 'a', 'a', 'b', 'b', 'c']print(dict(Counter(a)))"""exec(code)

大家可以试一下,真的可以。骚出天际了。

当然了,你的确可以通过动态输入的方式,让其运行字符串代码,比如:

code = input()

然后你输入from collections import Counter; a = ['a', 'a', 'a', 'b', 'b', 'c']; print(dict(Counter(a)))输入的字符串中,每一句代码之间用分号;分割,这一点和 java 们很像。然后再运行

exec(code)

会得到同样的结果。这个操作大家在用 python 做科学计算的时候,可能用不到,但是当你用 python 写项目的时候,可能就能派上用场了。

怎么样,python 的这些骚操作,你都了解了吗?

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

    关注

    22

    文章

    2110

    浏览量

    73687
  • 机器学习
    +关注

    关注

    66

    文章

    8422

    浏览量

    132714
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84751

原文标题:骚操作又来了,实用的python“奇技淫巧”

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    有刷电机概述了解了多少?

    有刷电机是一种利用电刷和换向器来实现电流交换的电动机。其主要结构包括定子、转子、电刷和换向器。工作原理是基于电磁学中的法拉第电磁感应定律,通过电流在电磁线圈中形成磁场,进而驱动转子旋转。
    的头像 发表于 12-27 16:00 115次阅读
    有刷电机概述<b class='flag-5'>你</b><b class='flag-5'>了解了</b>多少?

    关于LCD应用,了解什么?

    ​今天我们学习合宙Air780E开发板LCD应用示例。 本文档适用于Air780E开发板 lcd-demo: Luatools下载调试工具 关联文档和使用工具 一、硬件准备 1.1 Air780E开发板一套 ​ 1.2 屏幕一个 这里选用的是st7789型号 ​ ​ 二、修改参数 根据指示接好线: ​ 设置屏幕的型号和分辨率: ​ 三、下载固件和软件 打开luatools项目管理新建项目并下载固件 ​ 四、效果展示 ​ ​完成!大家快来动手试试吧! 审核编辑 黄宇
    的头像 发表于 10-31 07:28 131次阅读
    关于LCD应用,<b class='flag-5'>你</b><b class='flag-5'>都</b><b class='flag-5'>了解</b>什么?

    Python常用函数大全

    Python 世界里,有一些宝藏函数和模块,它们可以让编程更轻松、代码更高效。这篇文章将带你一一认识这些神器,让的开发生活瞬间轻松不少!
    的头像 发表于 10-27 17:20 264次阅读

    APM32F411板的python+pyocd命令行操作

    前段时间学习了一下如何使用pyocd配合APM32F411VCTINY板在命令行下给它进行各种操作,在使用一段时间后就想着:pyocd是基于python的,那是不是也可以使用python
    的头像 发表于 10-18 16:21 315次阅读
    APM32F411板的<b class='flag-5'>python</b>+pyocd命令行<b class='flag-5'>操作</b>

    认识贴片电阻吗,对他了解多少?

    认识贴片电阻吗,对他了解多少?
    的头像 发表于 08-27 15:49 489次阅读
    <b class='flag-5'>你</b>认识贴片电阻吗,<b class='flag-5'>你</b>对他<b class='flag-5'>了解</b>多少?

    Python在AI中的应用实例

    Python在人工智能(AI)领域的应用极为广泛且深入,从基础的数据处理、模型训练到高级的应用部署,Python扮演着至关重要的角色。以下将详细探讨Python在AI中的几个关键应用
    的头像 发表于 07-19 17:16 1140次阅读

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,将会看到一些用 Python 实现文件复制的特殊
    的头像 发表于 07-18 14:53 429次阅读

    网线怎么选看完这篇了解了

    选择网线时,需要综合考虑多个因素以确保选择到适合自己需求的网线。以下是一些关键的选择要点: 线型与规格: 双绞线:这是最常用的网线类型,用于传输数据。常见的规格有Cat5、Cat5e、Cat6、Cat6a和Cat7等。 Cat5e(超五类线):理论传输速率1000Mbps,通常适用于家庭和办公场所。 Cat6(六类线):理论传输速率1Gbps,适用于需要更高速率的环境。 Cat6a(超六类线)和Cat7(七类线):具有更高的传输速度和更好的抗干扰性能,但价格也相应较高。 同轴电缆:主要用
    的头像 发表于 07-03 10:07 817次阅读

    MINIWARE的品牌故事,了解多少?

    作为易迪赛e-Design旗下的迷你智能工具创新品牌,MINIWARE以其独特的设计理念和卓越的产品质量,逐渐在市场上赢得了一席之地。但MINIWARE背后的品牌故事,了解多少呢?今天,让我们一起
    的头像 发表于 06-20 08:02 543次阅读
    MINIWARE的品牌故事,<b class='flag-5'>你</b><b class='flag-5'>了解</b>多少?

    无人机反制领域的10个基础问题,了解了吗?|特信无人机反制

    随着无人机技术的快速发展和普及,其在各行各业中的应用愈发广泛。然而,无人机的滥用和非法活动也日渐增多,给社会安全带来了严峻挑战。无人机反制技术应运而生,成为维护公共安全和秩序的重要手段。本文特信无人机反制小编将带你了解无人机反制领域的10个基础问题,帮助你更好地理解和应用这一技术。
    的头像 发表于 05-15 09:15 514次阅读
    无人机反制领域的10个基础问题,<b class='flag-5'>你</b><b class='flag-5'>都</b><b class='flag-5'>了解了吗</b>?|特信无人机反制

    传感器认证大揭秘,这些标识认识吗?

    我们经常会在传感器的包装上看到这些标志(如下图所示),在选择传感器时,用户应优先考虑带有这些认证标识的产品,以确保传感器能够满足应用需求并保障人员和设备的安全。明治传感拥有齐全的产品认证体系,我们
    的头像 发表于 04-12 08:24 1022次阅读
    传感器认证大揭秘,<b class='flag-5'>这些</b>标识<b class='flag-5'>你</b><b class='flag-5'>都</b>认识吗?

    生活中的这些网络传输介质,了解吗?

    高度互联的时代下,不管是日常的互联网浏览,还是全球范围内的数据传输,离不开一个关键的组成部分:网络传输介质。
    的头像 发表于 02-22 10:46 1391次阅读
    生活中的<b class='flag-5'>这些</b>网络传输介质,<b class='flag-5'>你</b><b class='flag-5'>都</b><b class='flag-5'>了解</b>吗?

    电抗器的这些特点知道吗

    电抗器是一种用于电力系统中的重要设备,它可以用来改善电力质量、稳定电压和提高系统的效率。下面萨顿斯(STS)和大家一起来了解电抗器的使用说明以及安装要点。
    的头像 发表于 01-30 11:36 689次阅读
    电抗器的<b class='flag-5'>这些</b>特点<b class='flag-5'>你</b><b class='flag-5'>都</b>知道吗

    关于JTAG口,了解多少?

    损坏了呢。首先要去排除基本的几项因素,一是,是否匹配连接,有很多设备会对应很多接口,在实际条件下要匹配正确,否则也会出现上述情况;二是,排除下载线的问题,如果是下载线坏了,可以使用多根下载线去尝试
    发表于 01-19 21:19

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法

    Python爬虫中文乱码问题。 一、了解字符编码 在解决乱码问题之前,我们首先需要了解一些基本的字符编码知识。常见的字符编码有ASCII、UTF-8和GBK等。 1. ASCII:是一种用于表示英文字母、数字和常用符号的字符编
    的头像 发表于 01-12 15:11 2436次阅读