前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >奇葩程序员:使用python“奇技淫巧”的骚操作,大开眼界

奇葩程序员:使用python“奇技淫巧”的骚操作,大开眼界

作者头像
汤贤
发布2020-05-18 15:39:40
3420
发布2020-05-18 15:39:40
举报
文章被收录于专栏:用户7289880的专栏

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

元素互换

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

代码语言:javascript
复制
a = 10
b = 5
temp = a
a = b
b = temp

Python 将这一操作简单化了

代码语言:javascript
复制
a = 10
b = 5
a,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] 。你会怎么做?

代码语言:javascript
复制
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 怎么做呢?

代码语言:javascript
复制
a = [1,2,3,4,5,6,8]
a = [item for item in a if item%2 != 0]

是不是骚的很?

Counter

代码语言:javascript
复制
from collections import Counter
a = ['a', 'a', 'a', 'b', 'b', 'c']
ptiny(dict(Counter(a)))

输出为:

代码语言:javascript
复制
{'a': 3, 'b': 2, 'c': 1}

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

zip 函数

先上代码:

代码语言:javascript
复制
a = [1,2,3]
b = ['a','b','c']
for x, y in zip(a,b):
 print (x, y)

输出为

代码语言:javascript
复制
1 a
2 b
3 c

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

exec

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

代码语言:javascript
复制
code = """
from collections import Counter
a = ['a', 'a', 'a', 'b', 'b', 'c']
print(dict(Counter(a)))
"""
exec(code)

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

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

代码语言:javascript
复制
code = input()

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

代码语言:javascript
复制
exec(code)

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 元素互换
  • 列表解析
  • Counter
  • zip 函数
  • exec
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档