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)

通常,上面这一行代码应该写成这样:

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

(0)

相关推荐

  • Python 一行代码能实现丧心病狂的功能

    手头有 109 张头部 CT 的断层扫描图片,我打算用这些图片尝试头部的三维重建.基础工作之一,就是要把这些图片数据读出来,组织成一个三维的数据结构(实际上是四维的,因为每个像素有 RGBA 四个通道). 这个数据结构,自然是 numpy 的 ndarray 对象,读取图像文件我习惯使用 PIL.因此,需要导入两个模块: import numpy as np from PIL import Image 接下来,我用一行代码就把 109 张图片读到了一个 109x256x256x4 的 numpy

  • Python一行代码实现自动发邮件功能

    1. 用Python每天给女神发送舔狗问候 用Python自动发送最基本的邮件(主题+收件人) 知识点 邮件结构 以263企业邮为例 邮件形式 内容 最基本 收件人+主题 最常用 收件人+主题+正文 一般流程申请邮件 收件人+主题+正文+抄送 发报表邮件 收件人+主题+抄送+附件 加说明报表邮件 收件人+主题+正文+抄送+附件 Python调用zmail模块 import zmail zmail.server('danzhao@sunlands.com','password').send_mai

  • Python一行代码识别增值税发票实现示例

    目录 识别发票 注意事项 识别发票 录入发票是一件繁琐的工作,如果可以自动识别并且录入系统,那可真是太好了. 今天我们就来学习一下,如何自动识别增值税发票并且录入系统~ 识别发票的代码最简单,只需要1行代码,如下所示. # 导入potencent这个库,下载命令:pip install potencent import potencent # 调用增值税识别的功能 potencent.ocr.VatInvoiceOCR(img_path=r'C:\vx_CoderWanFeng\your_img

  • Python一行代码实现快速排序的方法

    今天将单独为大家介绍一下快速排序! 一.算法介绍 排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法.其中"快速排序"(Quicksort)使用得最广泛,速度也较快.它是图灵奖得主C. A. R. Hoare(托尼·霍尔)于1960时提出来的. 二.算法原理 快排的实现方式多种多样,猪哥给大家写一种容易理解的:分治+迭代,只需要三步: 在数列之中,选择一个元素作为"基准"(pivot

  • 用python一行代码得到数组中某个元素的个数方法

    想法由来 今天写代码过程中遇到一个需求,计算一个list中数值为1的元素的个数,其中这个list的元素数值不是为0就是为1. 一开始想到的是写个方法来计算: # 返回一个0,1数组中1的数量 def num_one(source_array): count = 0 for x in source_array: if x == 1: count += 1 return count 嗯好吧,然后觉得这是最low的方法了,就在想强大的python可不可以一行代码就做到以上的效果,然后发现真的可以. c

  • Python一行代码解决矩阵旋转的问题

    今天刷<剑指offer>的时候碰到这样一道题: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:可以模拟魔方逆时针旋转的方法,一直做取出第一行的操作,例如 : 1 2 3 4 5 6 7 8 9 利用pop输出并且删除第一行后,再进行一次逆时针旋转,就变成: 6 9

  • Python一行代码实现生成和读取二维码

    目录 生成二维码 读取二维码 补充 总结 二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的.黑白相间的.记录数据符号信息的图形. 二维码被称为快速响应码,可能看起来很简单,但它们能够存储大量数据.无论扫描二维码时包含多少数据,用户都可以立即访问信息. 近些年二维码也是迅速普及,目前已经成为了我们生活中的一部分,它有许多应用场景: 信息获取(名片.地图.WIFI密码.资料) 网站跳转(跳转到微博.手机网站.网站) 广告推送(用户扫码,直接浏览商家推送的视频.音频广告) 手机电商(用

  • Python一行代码可直接使用最全盘点

    目录 1. If-Else 三元操作符(ternary operator) 2. 交换(swap)两个变量值 3. 匿名函数(Lambda)过滤列表 4. 模拟丢硬币(Simulate Coin Toss) 5. 读取文件内容到一个列表 6. 最简洁的斐波那契数列实现 7. 字符串转换成字节 8. 反转(Reverse)一个列表 9. 列表推导式(List comprehension) 10. print语句将字符串写入文件 11. 合并两个字典 12. 按字典中的value值进行排序 Writ

  • Python一行代码对话ChatGPT实现详解

    目录 一行代码对话ChatGPT 上代码 相关阅读 一行代码对话ChatGPT 最近ChatGPT火爆全球,哪怕你不是程序员,应该也听过他的大名了. 今天我们就来一起体验一下~1行Python代码就够了! 上代码 导入poai这个库后,只需要1行代码poai.chatgpt.chat,就可以和ChatGPT进行对话了.注释和参数说明如下, # pip install poai # 下载教程:https://www.bilibili.com/video/BV1SM411y7vw import po

  • Python一行代码快速实现程序进度条示例

    目录 引言 1.先上代码 2.使用说明 3.实现原理 引言 你在写代码的过程中,有没有遇到过以下问题? 已经写好的程序,想看看程序执行的进度? 在写代码批量处理文件的时候,如何显示现在处理到第几个文件了? 如上图所示的进度条是一个最好的解决方法,怎么在不修改原来代码的情况下,快速给程序加一个进度条呢? 今天我们来学习一个最简单的方法~ 1.先上代码 下载进度条的第三方库. pip install poprogress 使用这个库,快速制作进度条 from poprogress import si

随机推荐