6

タンパク質配列が与えられたコドンの可能なリストを作成しようとしています。

基本的に、私が作成しようとしているスクリプトは、指定された文字列入力を処理し、入力が表す別の文字列セットの可能な組み合わせを出力します。

たとえば、文字「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)

に置き換えると動作poolitertools.productますpool[0], pool[1]。しかし、ユーザーが2文字を超える文字列を入力できるようにする(つまり、ハードコーディングしないようにする)方法がわかりません。

助けてくれてありがとう!

4

3 に答える 3

7

*poolを呼び出すときに、リストを「アンパック」するために使用できますproduct()

for n in itertools.product(*pool):
   print(n)

この構文は、リストpoolを個別の定位置パラメーターに展開します。

于 2010-02-24T10:34:10.673 に答える
3

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))
于 2010-02-24T10:59:29.433 に答える