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中列表(list)操作方法汇总
Aug 18 Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
python开发之list操作实例分析
Feb 22 Python
python web框架学习笔记
May 03 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
Python编程中flask的简介与简单使用
Dec 28 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
js自动下载文件到本地的实现代码
2013/04/28 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
小区门卫管理制度
2014/01/29 职场文书
保险公司早会主持词
2014/03/22 职场文书
学校读书活动总结
2014/06/30 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
入股协议书范本
2014/11/01 职场文书
军事理论课感想
2015/08/11 职场文书
Python办公自动化之Excel(中)
2021/05/24 Python
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript