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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

635閲覧

pythonで特定の条件が満たされた時に変数を変更する方法

soisoi

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/07/05 04:38

初めて投稿させて頂きますよろしくお願いいたします

python

1number_z1=[] 2for a in range(2,100): 3 if a%5==0 or a%5==1: 4 continue 5 else: 6 number_z1.append(a)

タイトルは何と記載すればいいか分からなかったのでちょっと変な文章になりました
上記のコードは途中までしか書いていないのですが
2~99までの間で5の倍数と5の倍数に1を足した以外の数をnumber_z〇というリスト型変数に入れていこうと思っています

2,3,4,7,8,9,12,13,14,17・・・・
そしてこの時、「「リスト型に入れる時の入れ方」」なのですが
数字が途中で途切れた時、それまで入れていたnumber_z1ではなく全く別のリスト型の変数に追加したいです
上記の例だと
number_z1=[2,3,4]
number_z2=[7,8,9]
number_z3=[12,13,14]
number_z4=[17,18,19]
・・・・・・・・・・・
・・・・・・・・・・・
number_z18=[87,88,89]
number_z19=[92,93,94]
number_z20=[97,98,99]

最終的にこんな形で保存されるようにしたいのですが
変数を定義(a="あいうえお"等)せずに突然自動で追加してなおかつfor文内で新しい変数に変更させる方法がどうしても思いつきません
どうやってやればいいでしょうか


色々なやり方があると思うのですが、ここでは「変数を新しく自動で作ってその変数に数字を入れていく」という手法を使いたいのでお手数おかけしますがこちらの方法でやり方が分かる方がいらっしゃいましたらお願い致します

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

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

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

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

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

guest

回答2

0

ベストアンサー

最初に注意喚起しておきますが、Pythonの変数には型はありません。
従って、リスト型変数というものは存在しません。

次に、Pythonでできることと、Pythonでやった方が良いことは同じではないことを理解してください。

変数名を別の変数をもとに作成することは可能ですが、多くの場合は使いにくいだけでやらないほうが良いでしょう。

この場合であれば以下のようにリストのリストで十分です。

python

1number_z=[[]] 2i = 0 3for a in range(2,100): 4 if a%5==0: 5 pass 6 elif a%5==1: 7 i += 1 8 number_z.append([]) 9 else: 10 number_z[i].append(a)

実行結果

python

1>>> print(number_z) 2[[2, 3, 4], [7, 8, 9], [12, 13, 14], [17, 18, 19], [22, 23, 24], [27, 28, 29], [32, 33, 34], [37, 38, 39], [42, 43, 44], [47, 48, 49], [52, 53, 54], [57, 58, 59], [62, 63, 64], [67, 68, 69], [72, 73, 74], [77, 78, 79], [82, 83, 84], [87, 88, 89], [92, 93, 94], [97, 98, 99]] 3>>> print(number_z[0]) 4[2, 3, 4] 5>>> print(number_z[1]) 6[7, 8, 9] 7>>> print(number_z[19]) 8[97, 98, 99]

あまり使う必要はないのですが、言語的にできるかできないかに対するの答えは以下です。

python

1number_z1=[] 2i = 1 3for a in range(2,100): 4 if a%5==0: 5 pass 6 elif a%5==1: 7 i += 1 8 globals()[f'number_z{i}'] = [] 9 else: 10 globals()[f'number_z{i}'].append(a)

実行結果

python

1>>> print(number_z1) 2[2, 3, 4] 3>>> print(number_z2) 4[7, 8, 9] 5>>> print(number_z20) 6[97, 98, 99]

投稿2021/07/05 07:25

ppaul

総合スコア24670

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

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

soisoi

2021/07/06 07:27

こんにちは回答ありがとうございます。 お勧めされた変数を自動的に作らない方法でも自分のやりたい事が出来るかもしれません もう少し調べたり試してみてから再度コメントさせて頂きます。
soisoi

2021/07/07 05:43

ありがとうございます お勧めされた方法で無事自分のやりたい事が出来るようになりました
guest

0

変数を新しく自動で作って

って考え方はダメダメなので、そこは配列にするかリストにするかしましょう

投稿2021/07/05 04:47

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問