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

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

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

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

Python

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

Q&A

解決済

3回答

11232閲覧

ループ文で処理した結果のリストを、最後にまとめて返したい。

learnpython

総合スコア15

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2017/09/12 01:29

閲覧頂きありがとうございます。Python初心者です。

タイトルの通り、ループ文の処理結果の複数のリストをまとめてリターンしたいのですが
上手くいかず、、ご指摘アドバイス等頂けると幸いです。

for n in range (0,3) : # 結果格納用変数 listNumber = "result" + str(n) # ループ毎に処理結果を追加していき、最後にリターンする用の変数 resultListNumber.append(listNumber) if(n == 0) : listNumber = {no:0, food:apple} continue if(n == 1) : listNumber = {no:1, food:orange} continue if(n == 2) : listNumber = {no:2, food:grape} continue return resultListNumber

例として書いたものにも誤りがあるかもしれませんが、実施したいこととしましては
繰り返し処理の中で各々の結果を持ち、それを最後にまとめてリターンしたいということです。
ここでいうとリターン結果を

[{no:0, food:apple},{no:1, food:orange},{no:2, food:grape}]

のようにしたいです。

初歩的な質問かもしれませんが、何卒宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

  • 辞書のキーと値を文字列とするなら'no'のように'または"で囲む必要があります。
  • 結果表示において、辞書の要素の並び順は保証されないので{'food': 'apple', 'no': 0}のようになります。
  • 提示された結果例には含まれていませんが、"result" + str(n)のような文字も含めたい場合は辞書をネストするとよいでしょう。(回答コードのコメントアウト部分)

Python

1def makeList(): 2 ret = [] 3 for n in range(3): 4 if n == 0: 5 one = {'no':0, 'food':'apple'} 6 elif n == 1: 7 one = {'no':1, 'food':'orange'} 8 else: 9 one = {'no':2, 'food':'grape'} 10 11 ret.append(one) 12 #ret.append({"result" + str(n):one}) 13 14 return ret 15 16print(makeList()) 17# [{'food': 'apple', 'no': 0}, {'food': 'orange', 'no': 1}, {'food': 'grape', 'no': 2}] 18# [{'result0': {'no': 0, 'food': 'apple'}}, {'result1': {'no': 1, 'food': 'orange'}}, {'result2': {'no': 2, 'food': 'grape'}}]

投稿2017/09/12 01:49

can110

総合スコア38266

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

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

learnpython

2017/09/12 01:52

ご回答ありがとうございます!確かに''抜けてました。。 今回は使用しない予定ですが、 リスト名をオブジェクトに追加するやり方もご教示頂きありがとうございます。
guest

0

こんな感じでしょうか。

Python

1ret_list = [] 2for n in range(3) : 3 if(n == 0) : 4 tmp_dict = {'no':0, 'food':'apple'} 5 elif(n == 1) : 6 tmp_dict = {'no':1, 'food':'orange'} 7 elif(n == 2) : 8 tmp_dict = {'no':2, 'food':'grape'} 9 10 ret_list.append(tmp_dict) 11 12return ret_list

ループごとに処理が決まっているなら、最初からループを使う意味がない気もします。

投稿2017/09/12 01:38

LouiS0616

総合スコア35660

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

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

learnpython

2017/09/12 01:49

出来ました! 今つまづいていたのがループ文の書き方っていうところだったので、 簡略化して書きかましたが、実装したい内容はループごとにかなり複雑なので使わざるを得ないのです。。 ご回答ありがとうございました。
guest

0

ベストアンサー

ぱっとソースコードを見ての感想ですが、Returnのネストが一つ深くないでしょうか?

また、もし最後に結果を表示したい場合は、一度forループの外で、結果返答用の変数を宣言しておくのがいいと思います。

ということで以下のようになりますでしょうか?

pyhton

1 2resultListNumber = [] 3 4for n in range (0,3) : 5 # 結果格納用変数 6 listNumber = "result" + str(n) 7 # ループ毎に処理結果を追加していき、最後にリターンする用の変数 8 resultListNumber.append(listNumber) 9 10 if(n == 0) : 11 listNumber = {no:0, food:apple} 12 continue 13 if(n == 1) : 14 listNumber = {no:1, food:orange} 15 continue 16 if(n == 2) : 17 listNumber = {no:2, food:grape} 18 continue 19 20return resultListNumber

投稿2017/09/12 01:34

manzyun

総合スコア2244

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

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

learnpython

2017/09/12 01:48

出来ました! 見返して気付いたのですが appendは最初にやってしまうとただの文字列が連結されてしまいますね。 continueの後にそれぞれ入れたら上手くいきました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問