wolverine777
@wolverine777

Как зациклить добавление данных из сета в каждый новый элемент?

Помогите пожалуйста советом - существует ли какой-нибудь "элегантный" способ цикличного добавления элементов из сета в лист? Потому как мне лишь пока в голову приходят бесконечные nested loops.

Суть в том что мне необходимо получить все возможные варианты для заданной последовательности, например есть паттерн: 'ATG' - для него мне нужно сначала заменить [0] элемент - получится:

ATG (тут как бы замена А на А)
TTG
GTG
CTG

далее надо взять ATG (первый из четырех) и в нем заменить уже [1] элемент - получится:

AAG
ATG
AGG
ACG

теперь УЖЕ в этом листе взять AAG и в нем заменить [2] - получится:

AAA
AAT
AAC
AAG

разумеется это я показал лишь для первого элемента в каждой итерации - в конечном итоге мне необходимо таким образом перебрать все элементы листа в каждой итерации и для каждого провести замену последующей буквы, которая соответствует номеру итерации.

Если буква одна - получится 4 варианта, если 2 - соответственно 16 и так далее (4**n)

пока что мне единственным способом кажется такое решение: но что-то подсказывает что это чушь собачья.

pat = 'ATG'
tst = list(pat)

for i in range(len(tst)):
    
    for y in {'A','T','G','C'}:
        tst[i]=y
        print(tst)
        tst = list(pat)
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
Все возможные комбинации с повторами, длиной 3:
from itertools import product 
for s in product('ATGC', repeat=3):
    print(s)
'''
('A', 'T', 'G')
('A', 'T', 'C')
('A', 'G', 'A')
('A', 'G', 'T')
('A', 'G', 'G')
...
'''


itertools.product()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы