извините, кто-то знает, как я могу сделать перестановки в python с определенным списком и определенными числами, я объясняю:
У меня есть список с определенными элементами
lista = [a,b,c,d,e,f]
, тогда у меня есть набор с определенные числа:
set = {3,4,5}
я хочу сделать список перестановок с числами, содержащимися в наборе, чтобы каждый элемент в списке был заменен числами, содержащимися в наборе, следующим образом:
[3,4,3,5,4]
[3,5,3,4,4]
[3,4,4,3,4]
[5,4,5,5,4]
[4,4,5,5,5]
....
и так далее,
Если бы кто-то пытался сделать это, и они могли бы поделиться способом применения алгоритма, я был бы признателен.
Приветствия
Что старательными не являются перестановки, так как в перестановках то, что tendrГ-схвати звук всегда те же 5 элементов (давайте говорить они nГєmeros 3,3,4,4,5), реорганизованных всех возможных форм, но всегда два treses, два cuatros и пять.
Взамен судя по твоему примеру, что ты ищешь, состоит просто в том, чтобы первый элемент списка объелся с числом, которое было должно выбирать между (3,4,5), второй элемент то же самое, третьего равного, и т.д.... AsГ - podrГ-схвати получать например как результат [3, 3, 3, 3, 3]
, но tambiГ©n [3, 3, 3, 3, 4]
, и т.д.
у меня не остается ясным, если ты хочешь получить эти элементы "случайным образом" (в котором случае bastarГ - чтобы, с выбирать число случайным образом между (3,4,5) для каждый posiciГіn списка) или действительно ты хочешь все возможные комбинации.
import random
def dame_un_caso(conjunto, n=5):
lista = []
for _ in range(n):
lista.append(random.choice(list(conjunto)))
return lista
Каждый раз, когда ты призвал к dame_un_caso(conjunto)
ты devolverГЎ список 5 элементов, выбранных случайным образом внутри набора. Например:
>>> dame_un_caso({3,4,5})
[3, 5, 4, 4, 5]
nГєmero от комбинаций в этом случае не является очень высоким, но в зависимости от tamaГ±o набора и списка sГ - это смоги быть. Если N
- tamaГ±o списка и M
- tamaГ±o набора, nГєmero комбинаций serГ - в M ** N (так как у тебя есть M возможные выборы для первого элемента и из-за каждой из них другие M для второго, и т.д., с которым в конце концов ты считаешь M*M*M*...*M
повторенными N разы).
В твоем случае N=5, M=3 выходит 3 ** 5, которые являются 241 комбинацией.
Если ты хочешь все их, она operaciГіn, в котором ты в действительности нуждаешься, является картезианским продуктом набора (3,4,5) из-за sГ - сам, 5 разами. Этой operaciГіn делает ее тебе itertools.product
, asГ-:
from itertools import product
l = list(product({3,4,5}, repeat=5))
, Если ты смотришь len(l)
verГЎs 241, что совпадает с ожидаемым. Если ты показываешь элементы l
encontrarГЎs (в этом порядке):
[(3, 3, 3, 3, 3),
(3, 3, 3, 3, 4),
(3, 3, 3, 3, 5),
(3, 3, 3, 4, 3),
(3, 3, 3, 4, 4),
(3, 3, 3, 4, 5),
(3, 3, 3, 5, 3),
(3, 3, 3, 5, 4),
(3, 3, 3, 5, 5),
(3, 3, 4, 3, 3),
(3, 3, 4, 3, 4),
(3, 3, 4, 3, 5),
... etc