一行 Python 代码能实现什么丧心病狂的功能? | CSDN博文精选

论坛 期权论坛 期权     
CSDN   2019-7-21 15:19   3105   0



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


这个数据结构,自然是 numpy 的 ndarray 对象,读取图像文件我习惯使用 PIL。因此,需要导入两个模块:
  1. import numpy as npfrom PIL import Image
复制代码
接下来,我用一行代码就把 109 张图片读到了一个 109x256x256x4 的 numpy 数组中,耗时 172 毫秒:
  1. data = np.stack([np.array(Image.open('head%d.png'%i)) for i in range(109)], axis=0)
复制代码
通常,上面这一行代码应该写成这样:
  1. 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 能实现什么丧心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,其镜像贴只有 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)]))
复制代码





一行代码打印迷宫
  1. print(''.join(__import__('random').choice('\u2571\u2572') for i in range(50*24)))
复制代码





一行代码表白爱情

[code]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
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:65
帖子:240
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP