質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.69%

文字列の長さを計算し、最大値を名前とともに出力する

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 622

22Go

score 41

1、”>”で始まったらprint
2、”>”でないなら文字列を計算
3、計算結果の最大値と最小値を出力
4、最大値・最小値の時の”>”の文字列を表示

>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
MGQSEYISWVKCTSWLSNFVNLRGLRQPDGRPLYEYHATNDEYTQLTQLLRAVGQSQSNICNRDFAACFV
LFCSEWYRRDYERQCGWTWDPIYKKIGISFTATELGTIVPKGMEDYWLRPIRFYESERRNFLGTLFSEGG
LPFRLLKESDSRFLAVFSRILGQYEQAKQSGFSALSLARAVIEKSALPTVFSEDTSVELISHMADNLNSL
VLTHNLINHKEPVQQLEKVHPTWRSEFPIPLDDETGTHFLNGLLCAASVEAKPRLQKNKSTRCQFYWSEK
HPDELRVIVSLPDEVSFPVTSEPSTTRFELAICEDGEEVSGLGPAYASLENRQATVRLRKSEVRFGRQNP
SAGLSLVARAGGMIVGSIKLDDSEIAIGEVPLTFIVDADQWLLQGQASCSVRSSDVLIVLPRDNSNVAGF
DGQSRAVNVLGLKALPVKGCQDVTVTANETYRIRTGREQISIGRFALNGKRASWVCHPDETFIGVPKVIS
TLPDIQSIDVTRYTC


>YP_009518833.1 uncharacterized protein YtiA [Escherichia coli str. K-12 substr. MG1655]
MKEFLFLFHSTVGVIQTRKALQAAGMTFRVSDIPRDLRGGCGLCIWLTCPPGEEIQWVIPGLTESIYCQQ
DGVWRCIAHYGVSPR

>YP_009518832.1 iraD leader peptide [Escherichia coli str. K-12 substr. MG1655]
MENEHQYSGARCSGQAAYVAKRQECAK
A = ""
max_len = [0]
min_len = [10000000000000000000000]
max_number = [0]
min_number = [0]
max_protein = []
min_protein = []
x = []
y = []

with open("short.sequ.txt") as f:
    for line in f:
        strip_line = line.rstrip()
        len_count = len(strip_line)

        if strip_line.startswith(">"):
            print(strip_line+"\n")
            x.append(strip_line)
            A = ""

        else:
            A += strip_line

        if len_count == 0:
            print(len(A))
            A = ""

        if [len(A)] > max_len:
            max_number.append(len(A))
            x = []
            x.append(strip_line)



        if [len(A)] < min_len:
            min_number.append(len(A))
            y = []
            y.append(strip_line)



print(max(max_number))
new_number = [i for i in min_number if i > 0]
print(min(new_number))
print(x)
print(y)


最大値・最小値の時に読み込んだ文字列をリストに入れておきたいのですが、どのように条件を指定したらいいでしょうか?

理想としては

>YPa~
100

>YPb~
200

>YPc
300

最大:>YPc
最大値:300

最小:>YPa
最小値:>100

宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

ループを通してこんな感じのlistを作ることを目標にします。

[(">YPa~", 100), (">YPb~", 200), (">YPc", 300)]

minmaxkey引数を使って取り出すことが可能です。

min([(">YPa~", 100), (">YPb~", 200), (">YPc", 300)], key=lambda x:x[1])
# => ('>YPa~', 100)

あるいは、

[(">YPa~", 100文字の文字列), (">YPb~", 200文字の文字列), (">YPc", 300文字の文字列)]

として

min([(">YPa~", 100文字の文字列), (">YPb~", 200文字の文字列), (">YPc", 300文字の文字列)],
    key=lambda x:len(x[1]))
# => ('>YPa~', 100文字の文字列)
# この返り値を使い、len(('>YPa~', 100文字の文字列)[1])とかで長さを取得する


の方がシンプルだし、後々それぞれの文字列が欲しくなったときにも使いやすいですかね。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/14 21:33

    listの作り方教えていただけないでしょうか。

    キャンセル

  • 2019/01/14 21:37

    listに入れることはわかったのですが、()の付け方がわかりません

    キャンセル

  • 2019/01/14 21:39

    それについては私は考えていないので、自分で書くか、他の方が回答すればそれを参考にしてください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.69%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる