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

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

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

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

Q&A

解決済

1回答

1293閲覧

2つの要素が取れない

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2017/07/05 02:45

本来2つの要素が取れるはずなのに、取れないです。

start_array = [1, 6, 6] num_array = [[1, 3, 1], [3, 2, 2], [2, 3, 5], [3, 4, 4], [1, 6, 6]] def get_next_point(array): if start_array[0] != 4: next_point = start_array[0] +1 return next_point else: next_point = start_array[0] -1 return next_point select_array =[] def get_next_array(next_point): for i in range(5): if num_array[i][1] == next_point: select_array.append(num_array[i]) get_next_array(get_next_point(start_array)) print(select_array)

とコードを書き

[[3, 2, 2]]

と出力されました。
理想の機能は、
start_array[0]が1でget_next_pointメソッドで1+1=2の値が返ってきて、get_next_arrayでnum_array の2番目の要素が2のもの([3, 2, 2], [3, 4, 4]が該当)がselect_array配列に追加されprint(select_array)文で

[[3, 2, 2], [3, 4, 4]]

が出力されるようにしたいです。
なのに実際は[[3, 2, 2]] だけが出力されていてそれが
なぜなのかわかりません。
どう直せばよいのでしょうか?

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

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

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

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

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

Lhankor_Mhy

2017/07/05 03:00

『num_array の2番目の要素が2のもの([3, 2, 2], [3, 4, 4]が該当)』とありますが、[3, 4, 4]の2番目の要素は4では。
coco_bauer

2017/07/05 03:03

[3, 4, 4]の2番目の要素は4で、2ではないと思うのですが???  質問のコードは、num_array の2番目の要素が2のものである[[3, 2, 2]] だけを出力していて、正しいと思います。
guest

回答1

0

ベストアンサー

直前の質問と似たような間違いに陥っておられるように感じます。

get_next_array(get_next_point(start_array))

と書いたときの意味は、

  • get_next_point(start_array)の結果を計算して2を得る
  • 2をget_next_arrayの引数へ渡す。

つまり、get_next_arrayの引数は2であって、ループをする度に「get_next_point(start_array)を計算してくれるような意味はない」です。

もし、get_next_arrayの内部のループのそれぞれでnext_pointの値を「今追加した配列に従って求めなおしたい」のであれば、そのように書くとよいと思います。やりたいことが正確にわからないのですが、例えば次のようなことをしたいのではないでしょうか?

python

1start_array = [1, 6, 6] 2num_array = [[1, 3, 1], [3, 2, 2], [2, 3, 5], [3, 4, 4], [1, 6, 6]] 3 4def get_next_point(array): 5 if array[0] != 4: 6 return array[0] +1 7 else: 8 return array[0] -1 9 10select_array =[] 11 12def get_next_array(array): 13 next_point = get_next_point(start_array) 14 for i in range(5): 15 if num_array[i][1] == next_point: 16 select_array.append(num_array[i]) 17 next_point = get_next_point(num_array[i]) 18 19get_next_array(start_array) 20print(select_array)

投稿2017/07/05 03:21

編集2017/07/05 03:26
KSwordOfHaste

総合スコア18392

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問