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

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

詳細はこちら
Python 3.x

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

Q&A

解決済

5回答

421閲覧

pythonのリストへの格納に関する質問です。

atusi

総合スコア2

Python 3.x

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

0グッド

0クリップ

投稿2021/02/10 11:17

pythonのリストへの格納に関する質問です。
以下のようにfood1~3までの変数があります。
これをリストfoodsにfor文で格納したいのですが、どのようにすればいいのでしょうか。
手作業でfoods.append(food1)みたいに繰り返すしかないのでしょうか。

該当のソースコード

python

1food1 = "niku" 2food2 = "sakana" 3food3 = "kome" 4foods = [] 5

試したこと

for i in range(3): foods.append("food" + str(i))`

これだとリストにただの文字列が入ってしまいます。

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

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

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

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

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

guest

回答5

0

方法としては可能で、
locals() の返す辞書を通じて、ローカル変数にアクセスできます。
(状況によっては、locals 以外に vars, globals関数)

python

1food1 = "niku" 2food2 = "sakana" 3food3 = "kome" 4foods = [] 5 6 7for i in range(3): # 連番の数値は range(3) -> [0, 1, 2] なので、+1 8 foods.append(locals()["food" + str(i + 1)]) 9 10print(foods) # => ['niku', 'sakana', 'kome']

但し、このようなコードはできるだけ避けて、他の方の回答にあるように
元々の変数に入れる所を、リストに格納とした方が良いです。

投稿2021/02/10 12:50

teamikl

総合スコア8738

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

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

0

ベストアンサー

food4以降があっても自動で追従するようにしてみました。

Python

1import itertools 2 3foods = [*itertools.takewhile( 4 lambda e: e is not None, 5 (globals().get('food{}'.format(i)) for i in itertools.count(start=1)) 6)] 7print(foods)

実行結果 Wandbox

['niku', 'sakana', 'kome']

投稿2021/02/10 12:12

LouiS0616

総合スコア35668

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

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

0

これでいいですか?

python

1foods = [food1, food2, food3]

投稿2021/02/10 11:29

ppaul

総合スコア24670

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

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

0

質問欄のコードをそのまま受け取るなら、リスト化する際には手作業しかないと思います。
food1~3を定義するやり方を変えられるならそちらを検討するのが吉です。

3つまでなら下記で良いですが、10,100となると…

python3

1foods = [food1, food2, food3]

投稿2021/02/10 11:29

編集2021/02/10 11:31
jeanbiego

総合スコア3966

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

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

0

python

1for i in [food1, food2, food3]: 2 foods.append(i)

投稿2021/02/10 11:27

Nippun

総合スコア1147

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問