Как улучшить этот список понимания? - PullRequest
0 голосов
/ 24 апреля 2020

Интересно, я могу улучшить свой код python, чтобы он был написан короче. Я использую только стандартную библиотеку и библиотеку numpy. Вот код:

import numpy as np
x=1
y=2
np.array([(a,b,c) for a in [x,y] for b in [x,y] for c in [x,y]])

Как видите, эта программа производит все три комбинации элементов. В этой программе есть похожая часть, такая как for a in [x, y] и может ли она быть написана короче?

[Отредактировано]

Я хочу использовать только стандартную библиотеку и библиотеку numpy.

Входными данными должны быть любые значения, такие как x = 3, y = 8.

Ответы [ 2 ]

4 голосов
/ 24 апреля 2020

Использование itertools.product:

from itertools import product

# ...
np.array(list(product((x, y), repeat=3)))
0 голосов
/ 25 апреля 2020

Основываясь на похожем вопросе Предлагаемый Junkrat , я придумаю эту идею. (Но это не просто.)

import numpy as np
x=1
y=2
a = np.array(np.meshgrid([x, y], [x, y], [x, y]))   
a = np.rollaxis(a, 0, 4)         
a = a.reshape((2*2*2, 3))  
...