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

    文章

    2119

    浏览量

    75786
  • 机器学习
    +关注

    关注

    66

    文章

    8516

    浏览量

    135130
  • python
    +关注

    关注

    56

    文章

    4832

    浏览量

    87834

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基础篇3:掌握Python中的条件语句与循环

    Python编程语言中,条件语句和循环是构成复杂逻辑和数据处理的基石。本篇基础教程将帮助您深入了解Python中的条件语句和循环结构,让您能够更好地控制程序流程。 条件语句 条件语句允许程序根据
    发表于 07-03 16:13

    所以做出来了吗

    所以做出来了吗,求
    发表于 06-16 01:43

    ?如何在虚拟环境中使用 Python,提升的开发体验~

    RaspberryPiOS预装了Python需要使用其虚拟环境来安装包。今天出版的最新一期《TheMagPi》杂志刊登了我们文档负责人NateContino撰写的一篇实用教程,帮助你入门
    的头像 发表于 03-25 09:34 ?430次阅读
    ?如何在虚拟环境中使用 <b class='flag-5'>Python</b>,提升<b class='flag-5'>你</b>的开发体验~

    采购GUTOR UPS备品备件,隐藏的“雷区” 了解吗?

    在GUTOR UPS备品备件采购之路上,困难重重,选型、渠道甄别、成本把控、安装部署、售后保障,桩桩件件都是棘手难题。隐藏的“雷区” 了解吗?
    发表于 03-21 16:08

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 ?1506次阅读

    电磁兼容的这些问题,考虑到了吗?(下)

    性?为了确保电子设备的电磁兼容性符合要求,需进行相关的测试。这些测试包括传导和辐射发射测试、传导和辐射抗扰度测试等。这些测试需在专业的电磁兼容实验室中进行,以确保测试结
    的头像 发表于 01-16 11:39 ?735次阅读
    电磁兼容的<b class='flag-5'>这些</b>问题,<b class='flag-5'>你</b><b class='flag-5'>都</b>考虑到<b class='flag-5'>了吗</b>?(下)

    电磁兼容的这些问题,考虑到了吗?(上)

    导读随着电子设备的广泛使用,电磁兼容性问题愈发关键。本文将深入解析开发生产电子设备时需关注的电磁兼容性要点,并结合案例分析,助你全面了解如何确保电子设备在复杂电磁环境中的稳定运行。在电子设备日益普及
    的头像 发表于 01-14 11:39 ?799次阅读
    电磁兼容的<b class='flag-5'>这些</b>问题,<b class='flag-5'>你</b><b class='flag-5'>都</b>考虑到<b class='flag-5'>了吗</b>?(上)

    朗凯威锂电池定制 光伏发电到移动电源?这些器件少不了!

    宝子们,了解了这些器件,是不是觉得光伏发电到移动电源的过程也没那么神秘啦?要是对这方面感兴趣,欢迎点赞关注,咱们一起探索更多新能源的奥秘!
    的头像 发表于 12-27 17:08 ?669次阅读
    朗凯威锂电池定制 光伏发电到移动电源?<b class='flag-5'>这些</b>器件少不了!

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

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

    智慧路灯哪家强?看完这些案例就心里有数了

    智慧路灯哪家强?看完这些案例就心里有数了
    的头像 发表于 11-14 18:05 ?940次阅读
    智慧路灯哪家强?看完<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 ?470次阅读
    关于LCD应用,<b class='flag-5'>你</b><b class='flag-5'>都</b><b class='flag-5'>了解</b>什么?

    Python常用函数大全

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

    Python库解析:通过库实现代理请求与数据抓取

    Python中,有多个库可以帮助你实现代理请求和数据抓取。这些库提供了丰富的功能和灵活的API,使得可以轻松地发送HTTP请求、处理响应、解析HTML/XML/JSON数据,以及进行复杂的网络
    的头像 发表于 10-24 07:54 ?541次阅读

    APM32F411板的python+pyocd命令行操作

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

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

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