Python
1def drop(n, xs):
2 return xs[n:]
xsがイテレータになることもあるのなら、itertools.isliceの利用を検討します。
コメントを受けて
第1 引数で与えられた要素数まで、第2 引数に与えられたコレクション/イテレータを走査するイ
テレータを返す関数take()を定義せよ。
take()の結果のイテレータが走査しない残りの部分をイテレータで返すdrop()を定義せよ。
なるほど。第二引数はイテレータを取る場合があるのですね。
とりあえず、ざっくりイテレータの扱い方を紹介します。
Python
1>>> lst = [1, 2, 3]
2>>> it = iter(lst)
3>>> next(it)
41
5>>> next(it)
62
7>>> list(it)
8[3]
9>>>
iterを使えば、任意のコレクションからイテレータを取得することができます。
イテレータは状態を記憶するので、一度取り出した箇所の値を再度送出することはありません。
依って、drop関数は次のように簡単に実装できます。
0. 第二引数xsのイテレータitを取る
0. 第一引数n回分だけitをnextに放り込む
0. itを返す
これだけです。
ただし、nがxsの要素数より多い場合はStopIterationを捌いてやる必要があります。
スマートに解きたいなら前述のスライスやitertoolsを活用してみても良いでしょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/20 21:55
2019/05/20 22:05
2019/05/20 22:05
退会済みユーザー
2019/05/20 23:25
2019/05/20 23:40
退会済みユーザー
2019/05/20 23:55