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

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

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

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

Q&A

解決済

1回答

959閲覧

読み込んだデータから大きい数値が見つかる度にリストに収納したい

22Go

総合スコア55

Python

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

0グッド

0クリップ

投稿2019/01/14 04:55

編集2019/01/14 10:37

1、データを1行ずつ読み込む
2、”>”で始まる時は、その行を出力
3、”>”で始まらない場合は、その行の文字数をカウントする
4、カウントした文字数が最大値を上回る度に、その時の行と数値をリストに収納
5、カウントした文字数が最小値を下回る度に、その時の行と数値をリストに収納
6、最終的にリストに入っている最大値と最小値を出力する

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>YP_009518831.1 protein YtiD [Escherichia coli str. K-12 substr. MG1655] 20MADYAEINNFPPELSSSGDKYFHLRNYSEYSEYTSGFFLSLMIFIKS 21 22>YP_009518830.1 protein YtiC [Escherichia coli str. K-12 substr. MG1655] 23MPVNGIFDVFDMLSIYIIYKLIVSNNTWLIMRK 24 25

python

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

最大値と最小値が見つかった時に、前行と対応させてリストに格納するにはどうしたらいいでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

要件をみる限り、一々最大値か最小値かを調べる必要が無いように感じます。

文字列の長さを調べ、リストに追加

データが終わるまで続ける

最後にリストに対してmax()min()を使う

これで最大値と最小値は取れると思います。

追記

python

1n_lengthes = [] 2n_length = len(sentence) 3n_lengthes.append(n_length) 4 5n_max_length = max(n_lengthes) 6n_min_length = min(n_lengthes)

テキストと一緒に表示させたい場合はテキストもリストに追加しておき、最大最小値を出した後に
最大値と最小値を使ってn_lengthes.index(max or min)インデックスを出し、
テキストを取得すれば良さそうです。

投稿2019/01/14 05:19

編集2019/01/14 05:35
_Victorique__

総合スコア1392

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

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

22Go

2019/01/14 05:27

考えてみるとそうですね! 文字列の長さをlenで測って、そのあとにリストに加えていくには どんな作業が必要ですか?
22Go

2019/01/14 05:33

考えてみたのですが、最大値とその時の名前を対応させるにはどうしたらいいでしょうか?
22Go

2019/01/14 07:03

うまく書けなかったのですが、どのような流れで書いたらいいでしょうか?
22Go

2019/01/14 07:04

globalを使わない方法が自分には考えにくくてどうしても頼る考えになってしまいます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問