我试图创建一个给定的蛋白质序列的可能的密码子列表,基本上,我试图创建的脚本将处理给定的字符串输入,并输出输入代表的另一组字符串的可能组合。
基本上,我试图创建的脚本将处理一个给定的字符串输入,并输出输入所代表的另一组字符串的可能组合。
例如,字符'F'代表'UUU'或'UUC';字符'I'代表'AUU'、'AUC'或'AUA'。
给定输入'FI',我试图创建的脚本应该输出:'UUUAUU'、'UUUAUC'、'UUUAUA'、'UUCAUU'、'UUCAUC'和'UUCAUA'。
我目前被这个代码卡住了。
import itertools
F = ['UUU', 'UUC']
I = ['AUU', 'AUC', 'AUA']
seq, pool = 'FI', []
for i in seq:
pool.append(eval(i))
for n in itertools.product(pool):
print(n)
当我替换掉 pool
在 itertools.product
与 pool[0], pool[1]
. 但我不知道如何使它工作,使用户可以输入一个超过2个字符的字符串(即不使它硬编码)。
先谢谢你的帮助
你可以使用 *pool
以在调用该列表时 "解包"。product()
:
for n in itertools.product(*pool):
print(n)
该语法扩大了清单 pool
变成独立的位置参数。
itertools.product(pool[0],pool[1],...pool[len(pool)-1])相当于itertools.product(*pool)
import itertools
F = ['UUU', 'UUC']
I = ['AUU', 'AUC', 'AUA']
pool=[F,I]
for n in itertools.product(*pool):
print(''.join(n))