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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1718閲覧

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

22Go

総合スコア55

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2019/01/14 11:57

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

date

1>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655] 2MGQSEYISWVKCTSWLSNFVNLRGLRQPDGRPLYEYHATNDEYTQLTQLLRAVGQSQSNICNRDFAACFV 3LFCSEWYRRDYERQCGWTWDPIYKKIGISFTATELGTIVPKGMEDYWLRPIRFYESERRNFLGTLFSEGG 4LPFRLLKESDSRFLAVFSRILGQYEQAKQSGFSALSLARAVIEKSALPTVFSEDTSVELISHMADNLNSL 5VLTHNLINHKEPVQQLEKVHPTWRSEFPIPLDDETGTHFLNGLLCAASVEAKPRLQKNKSTRCQFYWSEK 6HPDELRVIVSLPDEVSFPVTSEPSTTRFELAICEDGEEVSGLGPAYASLENRQATVRLRKSEVRFGRQNP 7SAGLSLVARAGGMIVGSIKLDDSEIAIGEVPLTFIVDADQWLLQGQASCSVRSSDVLIVLPRDNSNVAGF 8DGQSRAVNVLGLKALPVKGCQDVTVTANETYRIRTGREQISIGRFALNGKRASWVCHPDETFIGVPKVIS 9TLPDIQSIDVTRYTC 10 11 12>YP_009518833.1 uncharacterized protein YtiA [Escherichia coli str. K-12 substr. MG1655] 13MKEFLFLFHSTVGVIQTRKALQAAGMTFRVSDIPRDLRGGCGLCIWLTCPPGEEIQWVIPGLTESIYCQQ 14DGVWRCIAHYGVSPR 15 16>YP_009518832.1 iraD leader peptide [Escherichia coli str. K-12 substr. MG1655] 17MENEHQYSGARCSGQAAYVAKRQECAK 18 19

python

1A = "" 2max_len = [0] 3min_len = [10000000000000000000000] 4max_number = [0] 5min_number = [0] 6max_protein = [] 7min_protein = [] 8x = [] 9y = [] 10 11with open("short.sequ.txt") as f: 12 for line in f: 13 strip_line = line.rstrip() 14 len_count = len(strip_line) 15 16 if strip_line.startswith(">"): 17 print(strip_line+"\n") 18 x.append(strip_line) 19 A = "" 20 21 else: 22 A += strip_line 23 24 if len_count == 0: 25 print(len(A)) 26 A = "" 27 28 if [len(A)] > max_len: 29 max_number.append(len(A)) 30 x = [] 31 x.append(strip_line) 32 33 34 35 if [len(A)] < min_len: 36 min_number.append(len(A)) 37 y = [] 38 y.append(strip_line) 39 40 41 42print(max(max_number)) 43new_number = [i for i in min_number if i > 0] 44print(min(new_number)) 45print(x) 46print(y) 47 48

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

理想としては

python

1>YPa~ 2100 3 4>YPb~ 5200 6 7>YPc 8300 9 10最大:>YPc 11最大値:300 12 13最小:>YPa 14最小値:>100 15

宜しくお願い致します。

chara1234d👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

python

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

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

python

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

あるいは、

python

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

として

python

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

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

投稿2019/01/14 12:14

編集2019/01/14 12:18
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

22Go

2019/01/14 12:33

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

2019/01/14 12:37

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

2019/01/14 12:39

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問