-3

Pickleモジュールと+str()関数の違いは何ですか? 次のコードを書き終えました

def orf(codons):
seqlist = []
flag = False
start = ['ATG']
    stop= ['TAA','TGA','TAG']
    for i in codons:
    if i in start:
        flag = True
            if flag == True:
        seqlist.append(i)
    if i in stop:
        flag = False
return seqlist

frame1 = string
codons = [frame1[i:i+3] for i in range (0, len(frame1),3)]
one = orf(codons)
seq1 =''.join(one)
output1 = 'Length of 1st open reading frame is:'+str(seq1)
#seq1 =''.join(one)
seq_list.append(seq1)
length1 = len(seq1)
output_1 = '\nSize of 1st open reading frame is:'+str(len(seq1))
length_list.append(length1)
out.write(output1)
out.write(output_1)

関数を使用して、+str()関数を(orf (codons))文字列の形式で取得します。これは を使用して可能ですかPickle。私はpythonチュートリアルを読みましたが、それが何を意味するのか理解できませんでした。私のコードを回避していただければ幸いです。

4

2 に答える 2

2

機能はありません+str

表示するコード スニペットには、文字列、演算子、およびクラスへの呼び出しで'Length of 1st open reading frame is:'+str(seq1)構成される式が含まれています。+str

Pickle は、(ほとんどの) Python オブジェクトをファイル (またはストリーム) にシリアル化できるようにするモジュールです。

于 2012-11-04T19:45:52.870 に答える
0

関数は、モジュールstrとは非常に異なることを行いpickleます。

str任意の Python オブジェクトを文字列に変換します。通常は、人間が読める方法または「わかりやすい」方法で行います (repr親しみやすさを少し減らし、機械の読みやすさに重点を置いて変換する関数もあります)。したがってstr([1,2,3])、文字列を返します'[1, 2, 3]'。カスタム クラスはstr、特別なメソッドをオーバーライドすることで、それらを文字列に変換する方法を制御できます__str__

pickle一方、Python オブジェクトのシリアル化用に設計されています。これには、オブジェクトを文字列に変換することも含まれますが、人間の解釈ではなく、機械の可読性に完全に焦点を当てています。実際、さまざまな形式のピクル (いくつかの異なるプロトコルがあります) から得られる文字列には、テキストとして直接表示できないバイナリ値が含まれています。(pickleには、カスタム クラスを関連付けることができるさまざまなフックもありますが、 よりも少し複雑です__str__。)

あなたの状況では、pickleあなたが望むものとは思えません。を使用strすると、整数、リスト、およびその他のオブジェクトを印刷用の文字列に変換できます。引用符を使用して作成したリテラル文字列と取得した文字列の両方を含む文字列はstr、演算子を使用して連結できます(ただし、代わりに文字列の書式設定+を検討することをお勧めします)。メソッドを使用してすでにリストを文字列に変換している場合は、結果に対して再度実行する必要はありません(質問のコードで行っているようです)。str.joinstrseq1

于 2012-11-04T19:50:46.127 に答える