Как заменить первый и последний элементы строк в списке всеми возможными комбинациями символов из другого - PullRequest
0 голосов
/ 12 января 2019

Например:

list1 = ["ACCC", "ACGT", "CGCG", "TGAA"]
list2 = ['A', 'C', 'G', 'T]

По сути, я хочу заменить первый и последний элементы строк в list1 на все возможные комбинации list2 и добавить каждый обратно в List1.

Пример вывода будет:

["ACCC", "ACGT", "CGCG", "TGAA", "CCCC", "GCCC", "TCCC", "ACCA", "ACCG", "ACCT", "CCCA", ..., "AGAT", "GGAT"]

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Другой вариант перестановки без зависимостей и понимания списка:

permutations = ((x,y) for x in list2 for y in list2)
[ x+e[1:-1]+y for x, y in permutations for e in list1 ]

#=> ['ACCA', 'ACGA', 'AGCA', 'AGAA', 'ACCC', 'ACGC', 'AGCC', 'AGAC', 'ACCG', 'ACGG', 'AGCG', 'AGAG', 'ACCT', 'ACGT', 'AGCT', 'AGAT', 'CCCA', 'CCGA', 'CGCA', 'CGAA', 'CCCC', 'CCGC', 'CGCC', 'CGAC', 'CCCG', 'CCGG', 'CGCG', 'CGAG', 'CCCT', 'CCGT', 'CGCT', 'CGAT', 'GCCA', 'GCGA', 'GGCA', 'GGAA', 'GCCC', 'GCGC', 'GGCC', 'GGAC', 'GCCG', 'GCGG', 'GGCG', 'GGAG', 'GCCT', 'GCGT', 'GGCT', 'GGAT', 'TCCA', 'TCGA', 'TGCA', 'TGAA', 'TCCC', 'TCGC', 'TGCC', 'TGAC', 'TCCG', 'TCGG', 'TGCG', 'TGAG', 'TCCT', 'TCGT', 'TGCT', 'TGAT']
0 голосов
/ 12 января 2019

Вы должны перебрать list2 дважды. Один раз для всех возможных первых элементов и второй раз для всех возможных конечных элементов.

list1 = ["ACCC", "ACGT", "CGCG", "TGAA"]
list2 = ['A', 'C', 'G', 'T']

output = []
for code in list1:
    for start_el in list2:
        for end_el in list2:
            output.append(start_el + code[1:-1] + end_el)

print(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...