在python 3中使用itertools.product和列表

bow*_*bow 6 python python-itertools python-3.x

我正在尝试根据蛋白质序列创建一个可能的密码子列表.

基本上,我正在尝试创建的脚本将处理给定的字符串输入并输出输入所代表的另一组字符串的可能组合.

例如,字符"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)
Run Code Online (Sandbox Code Playgroud)

当我替换poolitertools.product,它工作pool[0], pool[1].但我无法弄清楚如何使其工作,以便用户可以输入超过2个字符的字符串(即不使其硬编码).

在此先感谢您的帮助!

sth*_*sth 7

您可以*pool在调用时使用"解压缩"列表product():

for n in itertools.product(*pool):
   print(n)
Run Code Online (Sandbox Code Playgroud)

此语法将列表扩展pool为单独的位置参数.