前提・実現したいこと
リスト内の最初の2つを足し一つにする関数を繰り返し使いたいが上手く使えず、エラーの原因がわからず困っています。
print()で一旦、変数ansに出力するリストを格納すると上手くprintしてくれるのですが、
print()の中で直接関数の引数に関数を書いてprintしようとすると、2つ目のprintではerrorが出てしまいます。
以下のコードでIndexError: list index out of rangeが出ない様にするにはどうすれば良いでしょうか?
また、この様な問題に当たった時に、何と検索すれば解決に繋がり易いかアドバイス頂けると尚嬉しいです。
発生している問題・エラーメッセージ
IndexError: list index out of range
該当のソースコード
python
1# -*- coding: utf-8 -*- 2 3N = [1, 2, 3, 4] 4 5def p1(l): 6 l_tmp = l[0] + l[1] 7 l.pop(0) 8 l[0] = l_tmp 9 return l 10 11ans = p1(p1(N)) 12 13print(ans) # ここではエラーが出ず、[6, 4]が出力される 14print(p1(p1(N))) # IndexErrorが出る
試したこと
元々、関数は複数種類あり、print(p1(p2(p4(p3(・・・)))))などとして、与えられたリストに対し関数1回使うごとにリスト先頭2要素を一つにまとめて短くしていく、もう少し複雑なコードでした。原因を特定するためにここまで簡略化したのですが、ここまで簡略化してansの中身を単に外に出してprint出来ないことに心が折れteratailに登録し初めての質問です。
補足情報(FW/ツールのバージョンなど)
python 3.7.4 を使っています
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/30 04:14