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中cPickle用法例子分享
Jan 03 Python
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
python交互式图形编程实例(三)
Nov 17 Python
Python循环结构的应用场景详解
Jul 11 Python
Python 绘制酷炫的三维图步骤详解
Jul 12 Python
python文字转语音的实例代码分析
Nov 12 Python
基于python实现对文件进行切分行
Apr 26 Python
Django限制API访问频率常用方法解析
Oct 12 Python
Python descriptor(描述符)的实现
Nov 15 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
解决pytorch读取自制数据集出现过的问题
May 31 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
PHP 5.0对象模型深度探索之对象复制
2008/03/27 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现中文转换url编码的方法
2016/06/14 Python
Python中格式化format()方法详解
2017/04/01 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
深入理解Python 多线程
2020/06/16 Python
python爬虫工具例举说明
2020/11/30 Python
地理科学专业自荐信
2014/09/01 职场文书
课外活动实习计划
2015/01/19 职场文书
亮剑观后感600字
2015/06/05 职场文书
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏