乐趣区

关于python:一行-Python-代码能实现哪些丧心病狂的功能4个案例

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


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

import numpy as npfrom 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)]))

2. 一行代码打印迷宫

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

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)]))

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 应用过程中用一行代码实现过哪些激动人心的性能呢?

退出移动版