Какие сумасшедшие вещи можно сделать с помощью одной строки кода Python? (4 случая)

Python
Какие сумасшедшие вещи можно сделать с помощью одной строки кода Python? (4 случая)

У меня есть 109 КТ-томограмм головы, и я планирую использовать их, чтобы попробовать 3D-реконструкцию головы. Одной из основных задач является считывание этих данных изображения и организация их в трехмерную структуру данных (фактически четырехмерную, поскольку каждый пиксель имеет четыре канала RGBA).

图片Эта структура данных, естественно, представляет собой объект numpy ndarray, и я привык использовать PIL для чтения файлов изображений. Поэтому необходимо импортировать два модуля:

import numpy as npfrom PIL import Image

Затем я прочитал 109 изображений в массив 109x256x256x4 с помощью одной строки кода, что заняло 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, для других языков сложно что-то сделать с помощью строки кода. На Zhihu есть статья под названием «Какую сумасшедшую функцию может выполнить одна строка 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?