Python 一行代码能实现丧心病狂的功能


Posted in Python onJanuary 18, 2020

手头有 109 张头部 CT 的断层扫描图片,我打算用这些图片尝试头部的三维重建。基础工作之一,就是要把这些图片数据读出来,组织成一个三维的数据结构(实际上是四维的,因为每个像素有 RGBA 四个通道)。

Python 一行代码能实现丧心病狂的功能

这个数据结构,自然是 numpy 的 ndarray 对象,读取图像文件我习惯使用 PIL。因此,需要导入两个模块:

import numpy as np
from PIL import Image

接下来,我用一行代码就把 109 张图片读到了一个 109x256x256x4 的 numpy 数组中,耗时 172 毫秒:

data = np.stack([np.array(Image.open('head%d.png'%i)) for i in range(109)], axis=0)

通常,上面这一行代码应该写成这样:

data = list()
for i in range(109):
	img = Image.open('head%d.png'%i)
	img = np.array(img)
	data.append(img)
data = np.stack(data, axis=0)

我把这些代码写成一行,却毫无晦涩艰深之感,仍然像诗歌一样优美、像自然语言一样通俗!

那一刻,我脑洞大开,很想知道 python 高手们只用一行代码都能干些什么?当然,限定条件是不能引用自定义的模块,可以使用内置模块或通用的第三方模块。上网一搜,发现这个问题好像是 python 的专属问题,其他语言很难用一行代码做点什么。知乎上有一篇名为《一行 Python 能实现什么丧心病狂的功能?》的帖子,其镜像贴只有 java 的和 js 的,点进去发现,和 python 的完全不是一个概念。

整理了一下知乎上这篇文章的内容,颇觉有趣,分享给大家。

1. 一行代码打印乘法口诀

print('\n'.join([' '.join(["%2s x%2s = %2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))

Python 一行代码能实现丧心病狂的功能

2. 一行代码打印迷宫

print(''.join(__import__('random').choice('\u2571\u2572') for i in range(50*24)))

Python 一行代码能实现丧心病狂的功能

3. 一行代码表白爱情

print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0else' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))

Python 一行代码能实现丧心病狂的功能

4. 一行代码打印小龟龟

print('\n'.join([''.join(['*' if abs((lambda a:lambda z,c,n:a(a,z,c,n))(lambda s,z,c,n:z if n==0 else s(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2 else ' ' for x in range(-80,20)]) for y in range(-20,20)]))

Python 一行代码能实现丧心病狂的功能

你在 python 使用过程中用一行代码实现过哪些激动人心的功能呢?欢迎留言讨论。

Python 相关文章推荐
python二叉树遍历的实现方法
Nov 21 Python
python中getaddrinfo()基本用法实例分析
Jun 28 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
python爬取网易云音乐评论
Nov 16 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
一文读懂python Scrapy爬虫框架
Feb 24 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 #Python
Pytorch 实现数据集自定义读取
Jan 18 #Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 #Python
selenium 多窗口切换的实现(windows)
Jan 18 #Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 #Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 #Python
Pytorch之finetune使用详解
Jan 18 #Python
You might like
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
php微信开发接入
2016/08/27 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
微信小程序 转发功能的实现
2017/08/04 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
python简单读取大文件的方法
2016/07/01 Python
Django URL传递参数的方法总结
2016/08/28 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
python访问hdfs的操作
2020/06/06 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
中国旅游网站:同程旅游
2016/09/11 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
初中化学教学反思
2014/01/23 职场文书
优秀老师事迹材料
2014/02/05 职场文书
新文化运动的口号
2014/06/21 职场文书
文明家庭事迹材料
2014/12/20 职场文书
病人慰问信范文
2015/02/15 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL