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

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

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

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

Q&A

2回答

569閲覧

Python 二重ループ for文 外側のループ 2回目以降実行されない

syogak

総合スコア2

Python

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

0グッド

1クリップ

投稿2023/01/12 18:33

Python 二重for文 内側のループが実行されない

Pythonで、二重for文を用いて出力データに書き込もうとしたところ、外側の2回目のループ以降内側のループ内の処理が実行されなくて、困っています。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 二重ループの際に、外側の2回目でのループ時も内側のfor文の処理が実行されること

該当のソースコード

Python

1 for i, (a, b) in enumerate(comb): 2 for l in input_file: 3 l = l.strip() 4 items = l.split(",") 5 output_file.append(open(col[a] + " vs " + col[b] + ".txt", "w")) 6 output_file[i].write(items[a]) 7 output_file[i].write("\t") 8 output_file[i].write(items[b]) 9 output_file[i].write("\n") 10 print(output_file[i])

combはタプルのリスト、input_fileは数値データです。

combは組み合わせ((0,1), (0,2), ... , (2, 3))のリストであり、それに該当するinput_fileの列のデータを代入したいと思っています。

何か質問があればおっしゃってください

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

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

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

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

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

guest

回答2

0

こういうことですか?

python

1def write_tuple(comb: tuple[tuple[int, int], ...]) -> None: 2 for integers in comb: 3 with open(f"{integers[0]}vs{integers[1]}.txt", "w") as f: 4 f.write(f"{integers[0]}\t{integers[1]}\n") 5 6 7dataset: tuple[tuple[int, int], ...] = ((1, 0), (3, 6), (9, 2)) 8 9write_tuple(dataset) 10 11# 1vs0.txt 12# 1 0 13 14# 3vs6.txt 15# 3 6 16 17# 9vs2.txt 18# 9 2

投稿2023/01/12 23:43

Demerara

総合スコア392

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

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

0

Python

1 for i, (a, b) in enumerate(comb): 2 input_file = open("---", "r") 3 for l in input_file: 4 l = l.strip() 5 items = l.split(",") 6 output_file.append(open(col[a] + " vs " + col[b] + ".txt", "w")) 7 output_file[i].write(items[a]) 8 output_file[i].write("\t") 9 output_file[i].write(items[b]) 10 output_file[i].write("\n") 11 print(output_file[i])

とinput_fileを初期化することでひとまず解決いたしました。
他に、間違えているところや、より良い解決法があれば、ご教授いただけると幸いです。

投稿2023/01/12 19:13

syogak

総合スコア2

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

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

TakaiY

2023/01/13 05:11

開いたファイルは閉じる必要があるので、上記の書き方はよくありません。inputファイルのループを抜けた後にcloseしましょう。 inputファイルの内容を繰り返し使いたいのであれば、他の方法として、 - 一旦全てリストに読み込んでそれを使う - ファイルを開いたまま先頭に戻るのにseek()を使う などがあります。 ファイルのサイズが巨大であったりする場合は、2の方がいいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問