🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

2回答

928閲覧

Pythonにて繰り返しの処理を教えてください。

jazzmaster

総合スコア26

Python

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

0グッド

0クリップ

投稿2021/02/24 03:23

編集2021/02/24 06:06

row_list_A1 = myobject.extract_targetrows_method_A(target_list_1)
start_row, end_row = row_list_A1
myobject.write_data((start_row - 1, end_row + 0), 'target_list/target_list_3.txt')

row_list_A2 = myobject.extract_targetrows_method_A(target_list_2) start_row, end_row = row_list_A2 myobject.write_data((start_row - 1, end_row + 0), 'target_list/target_list_3.txt')





target_list_1 = ['AAA', 'BBB']
target_list_2 = ['CCC', 'DDD']
target_list_3 = ['EEE', 'FFF']
target_list_4 = ['GGG', 'HHH']
target_list_5 = ['111', '222']
target_listは400くらいまであります。




繰り返しの処理の書き方で悩んでいます。
例えばtarget_list_8 ~ target_list_12までのみを繰り返す場合はどのように
for文を書けば良いのでしょうか。初心者な質問で申し訳ないですがよろしくお願いいたします。

追記1 ###

Python

1target_lists1 = [target_list_2,target_list_3,target_list_4,target_list_5,target_list_6,target_list_7] 2 for val1 in target_lists1: 3 row_list_A2 = myobject.extract_targetrows_method_A(val1) 4 start_row, end_row = row_list_A2 5 myobject.write_data((start_row - 1, end_row + 0), 'target_list/target_list_2.txt')

これで何とかできたのですが、target_lists1の要素がもし100個などあった場合、書くのがとても大変に思います。おそらくy_waiwaiさんのおっしゃるtarget_list[i]でスマートに書けそうな気がするのですが、よろしければお教えください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

もしも、target_list_1とかtarget_list_400に値を設定しているのがjazzmasterさんならt、y_waiwaiさんが書いているようにarget_list[1]とかtarget_list[400]とかを使えば簡単にできます。
そうでないなら、以下のようにしてリストの形に変えることで対応できます。

python

1>>> 2>>> target_list_1 = ['AAA', 'BBB'] 3>>> target_list_2 = ['CCC', 'DDD'] 4>>> target_list_3 = ['EEE', 'FFF'] 5>>> target_list_4 = ['GGG', 'HHH'] 6>>> target_list_5 = ['111', '222'] 7>>> start = 1 8>>> end =5 9>>> target_list = [globals()[f'target_list_{i}'] for i in range(start, end+1)] 10>>> print(target_list) 11[['AAA', 'BBB'], ['CCC', 'DDD'], ['EEE', 'FFF'], ['GGG', 'HHH'], ['111', '222']]

これを使って繰り返しを行うと、

python

1start = 1 2end =5 3target_list = [globals()[f'target_list_{i}'] for i in range(start, end+1)] 4#print(target_list) 5 6for i in range(end-start+1): 7 row_list_A1 = myobject.extract_targetrows_method_A(target_list[i-1]) 8 start_row, end_row = row_list_A1 9 myobject.write_data((start_row - 1, end_row + 0), 'target_list/target_list_3.txt')

繰り返しの問題とは関係ありませんが、これを実行すると、同じファイルを何度も書くことになってしまい、最期のものしか残りません。
もしも、target_list/target_list_3.txt'の3の部分を変えたいのであれば

python

1start = 1 2end =5 3target_list = [globals()[f'target_list_{i}'] for i in range(start, end+1)] 4#print(target_list) 5 6for i in range(end-start+1): 7 row_list_A1 = myobject.extract_targetrows_method_A(target_list[i]) 8 start_row, end_row = row_list_A1 9 myobject.write_data((start_row - 1, end_row + 0), f'target_list/target_list_{i+start}.txt')

のようにやれば
target_list/target_list_1.txt
target_list/target_list_2.txt
target_list/target_list_3.txt
target_list/target_list_4.txt
target_list/target_list_5.txt
に順番に書き込みます。

投稿2021/02/24 04:27

ppaul

総合スコア24670

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

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

jazzmaster

2021/02/24 06:08

とても丁寧な回答ありがとうございます。とても参考になりました!
jazzmaster

2021/02/24 06:46

追記1の場合ですと、どのようにすべきでしょうか。
ppaul

2021/02/24 07:14

私の回答のうち、 end = 5 を end =100 に変更して下さい。
guest

0

target_listってのを配列にしてしまいましょう
そうすれば、iを変化させれば
target_list[i]
で、アクセスできます

投稿2021/02/24 03:27

y_waiwai

総合スコア88038

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

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

jazzmaster

2021/02/24 03:53

回答ありがとうございます。うまくいかないです。。
y_waiwai

2021/02/24 04:01

うまくいかないのはやり方がまずいせいかと。 コードを提示しましょう
y_waiwai

2021/02/24 06:06

target_list = [ ['AAA', 'BBB'], ['CCC', 'DDD'], ['EEE', 'FFF'], ['GGG', 'HHH'], ['111', '222'], #400個続く ] ってやったらどーです?
jazzmaster

2021/02/24 06:06

追記1として記載させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問