Python 一行代码能实现丧心病狂的功能
手头有109张头部CT的断层扫描图片,我打算用这些图片尝试头部的三维重建。基础工作之一,就是要把这些图片数据读出来,组织成一个三维的数据结构(实际上是四维的,因为每个像素有RGBA四个通道)。
这个数据结构,自然是numpy的ndarray对象,读取图像文件我习惯使用PIL。因此,需要导入两个模块:
importnumpyasnp fromPILimportImage
接下来,我用一行代码就把109张图片读到了一个109x256x256x4的numpy数组中,耗时172毫秒:
data=np.stack([np.array(Image.open('head%d.png'%i))foriinrange(109)],axis=0)
通常,上面这一行代码应该写成这样:
data=list() foriinrange(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(["%2sx%2s=%2s"%(j,i,i*j)forjinrange(1,i+1)])foriinrange(1,10)]))
2.一行代码打印迷宫
print(''.join(__import__('random').choice('\u2571\u2572')foriinrange(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'')forxinrange(-30,30)])foryinrange(30,-30,-1)]))
4.一行代码打印小龟龟
print('\n'.join([''.join(['*'ifabs((lambdaa:lambdaz,c,n:a(a,z,c,n))(lambdas,z,c,n:zifn==0elses(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2else''forxinrange(-80,20)])foryinrange(-20,20)]))
你在python使用过程中用一行代码实现过哪些激动人心的功能呢?欢迎留言讨论。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。