zoukankan      html  css  js  c++  java
  • 你知道一行 Python 代码能实现什么丧心病狂的功能吗?

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

    这个数据结构,自然是 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)

    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 的专属问题,其他语言很难用一行代码做点什么。知乎上有一篇名为《一行 Python 能实现什么丧心病狂的功能?》的帖子,其镜像贴只有 java 的和 js 的,点进去发现,和 python 的完全不是一个概念。

    整理了一下知乎上这篇文章的内容,颇觉有趣,分享给大家。

    1. 一行代码打印乘法口诀

    1print('
    '.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('u2571u2572') for i in range(50*24)))

    3. 一行代码表白爱情

    print(' '.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(' '.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 使用过程中用一行代码实现过哪些激动人心的功能呢?欢迎留言讨论。

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/nanhe/p/12911664.html
Copyright © 2011-2022 走看看