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 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
python实现静态web服务器
Sep 03 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
Python Django路径配置实现过程解析
Nov 05 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 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
当海贼王变成JOJO风
2020/03/02 日漫
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
Prototype Template对象 学习
2009/07/19 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
VUE+node(express)实现前后端分离
2019/10/13 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
Servlet的生命周期
2013/08/25 面试题
电信专业应届生自荐信
2013/09/28 职场文书
超市商业计划书
2014/05/04 职场文书
酒店员工培训方案
2014/06/02 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
给老师的感谢信
2015/01/20 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS