アルゴリズムの初歩的な問題なのですが、n個のリストの中で n1 +n2, n1+n2+n3,,,ni+...
のようなプログラムでそれを新しいリストとして出力するプログラムが書きたいです。
たとえば,下のlist[1,2,3,4]でしたら、1+2 =3, 1+2+3= 6, 1+2+3+4 = 10なので
最終的にはnew_list = [3,6,10]となります。
重複を避けたいので一旦集合を使ってます。すみませんが、宜しくお願いいたします。
python3
1def steps(array): 2 numbers = set() 3 for i in range(0, len(array)): 4 first_num = array[i] 5 for j in range(i+1, len(array)): 6 second_nums = array[j] 7 numbers.add(first_num+second_nums) 8 new_list = list(numbers) 9 print(new_list) 10 11if __name__ == '__main__': 12 array = [1,2,3,4] 13 steps(array) 14 15out 16[3] 17[3, 4] 18[3, 4, 5] 19[3, 4, 5] 20[3, 4, 5, 6] 21[3, 4, 5, 6, 7] 22
ループを使わないでコードを書いてみると、2つ目のループの書き方が分かるかもしれません。
お疲れ様です、アドバイスの方をありがとうございます。ループを使わないと言うのはwhile文もしくは再帰的な関数でリスト内要素を1つずつ足していく方法と言う事でしょうか?
> たとえば,下のlist[1,2,3,4]でしたら、 1+2 =3,+2+3= 6, 1+2+3+4 = 10なので
上の文章をそのままコードにしてみるという意味です。(1+2 =3 なら array[0]+array[1] になります)
そうすると添字の規則性が見えてきませんか?
再起関数内でarray[0]を固定、そこにfor loopでインデックスが尽きるまで新しいarrayに要素を足していくような関数でしょうか?
回答3件
あなたの回答
tips
プレビュー