Страницы

Поиск по вопросам

четверг, 28 марта 2019 г.

Циклический цикл

Язык не важен, поясню на примере языка питон:
myarray=['a', 'b', 'c'] number=3 def myfunc(myarray, number): #при number = 3 newarray=[] for s1 in myarray for s2 in myarray for s3 in myarray newarray.append(s1+s2+s3) return newarray
должен возвратить: aaa, aab, aac, aba, abb, abc, итд, Т.е. если number = 4, то все четырехзначные, что можно составить, если 5, то пятизначные и тд.
Как это сделать?


Ответ

from itertools import product
chars = 'abc'
print(list(product(chars, repeat=3)))
# [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ...
Выходные данные уже преобразуй во что нужно.
Вот псевдо-код реализации product() из документации
def product(*args, repeat=1): # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111 pools = [tuple(pool) for pool in args] * repeat result = [[]] for pool in pools: result = [x+[y] for x in result for y in pool] for prod in result: yield tuple(prod)

Комментариев нет:

Отправить комментарий