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

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

詳細はこちら
リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

3735閲覧

Python for文で得た結果をリストに格納する方法がわかりません

asdfghjkwerty23

総合スコア0

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/12/01 07:31

編集2020/12/01 08:49

前提・実現したいこと

for文で得た結果をリストに格納する方法を教えていただきたいです。
初心者質問のため申し訳ありませんが、よろしくお願いいたします。

該当のソースコード

Python

1def data(): 2 result =[] 3 for route in route_nodes.keys(): 4 if x[route].X > 0.01: 5 totalcost = route_cost[route]*x[route].X 6 print(totalcost) 7 result.append(totalcost) 8 return result

修正前コードは以下のものです。

Python

1for route in route_nodes.keys(): 2 if x[route].X > 0.01: 3 totalcost = route_cost[route]*x[route].X 4 print(route, x[route].X, route_nodes[route]) 5 print(f"所要時間:{totalcost}")

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

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

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

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

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

TakaiY

2020/12/01 07:59 編集

上記のコードでどのような問題があるのでしょう? 困っていることを具体的に書いてください。 エラーが出ているのであれば、そのエラーをすべて提示ください。
asdfghjkwerty23

2020/12/01 08:30

結果をresultの中に新しく追加したいのですが、追加することができていない状況です。 実行をするとエラーもなく終了し、結果として追加されていない状況だったため、解決方法がわからず質問させていただいた次第です。
t_obara

2020/12/01 08:33

xはどこから出てきたのでしょう。
asdfghjkwerty23

2020/12/01 08:37

xはそれより以前のコードで使用しているものです。
TakaiY

2020/12/01 08:40

print(totalcost) としているところで、目的のものがちゃんと表示されているのでしょうか?
asdfghjkwerty23

2020/12/01 08:47

print(totalcost) では求めているものが表示されていません。 上に乗せたコードにする前に下記のコード for route in route_nodes.keys(): if x[route].X > 0.01: totalcost = route_cost[route]*x[route].X print(route, x[route].X, route_nodes[route]) print(totalcost) で試したところ表示されていました。
asdfghjkwerty23

2020/12/01 08:47

上に同じものを掲載させていただきます。
t_obara

2020/12/01 09:03

再現可能な最小限のコードを提示してください。
TakaiY

2020/12/01 09:14

表示されないということは、そもそもリストに入れるべき値が取得できていないと思われます。 処理部分の関数化もしているのでしょうか? であれば、それが原因の可能性もあり、部分的なコードをみただけでは、これ以上はわかりそうにありません。 質問についていえば、必要なデータが取得できているのであれば、そのコードでリストに入れて返すことはできそうです。 ただ、関数名の「data」というのは他のものと被りそうなので、避けたほうがいいでしょう。
asdfghjkwerty23

2020/12/01 09:20

t_obara様 途中の計算過程に商用ソフトを使っているため、再現が不可能かと思われます。 時間を割いて下さり、ありがとうございました。
asdfghjkwerty23

2020/12/01 09:22

TakaiY様 アドバイスいただきありがとうございます。 部分的なコードだったのにもかかわらず、原因を考えてくださりありがとうございます。 dataという関数名は避け、ほかの方法でアプローチしてみようと思います。 ありがとうございました。
guest

回答1

0

内容は理解できませんが、質問の内容からすると、求められているのは以下のようなものではないでしょうか。

python

1def data(): 2 result =[] 3 for route in route_nodes.keys(): 4 if x[route].X > 0.01: 5 totalcost = route_cost[route]*x[route].X 6 print(totalcost) 7 result.append([route, x[route].X, route_nodes[route], totalcost]) 8 return result 9

もし結果を文字列まで変換したもののリストにしたければ、以下のようにしてください。

python

1def data(): 2 result =[] 3 for route in route_nodes.keys(): 4 if x[route].X > 0.01: 5 totalcost = route_cost[route]*x[route].X 6 result.append(str(route)+' '+str(x[route].X)+' '+str(route_nodes[route])+f" 所要時間:{totalcost}") 7 return result

投稿2020/12/01 09:19

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問