リストに対して操作をするとき、その要素を簡単に指定できると楽。
2.3.6 シーケンス型 によると、(太字は引用者による)
s[i]
s の 0 から数えて i 番目の要素 (…)i または j が負の数の場合、インデクスは文字列の末端からの相対インデクスになります
マイナスつければ末尾から指定できるの忘れてた。 パタッ(o_ _)o~† 気づかずこんな冗長な書き方を… 。
a[len(a)-1] a[:len(a)-1]
忘れないように図を書いておこう。
上記に特別な名前を付けていないところが Python 流ということかな?
ついでにコードも書いておく。
a = [1,2,3,4,5] print u"先頭の要素: ", a[0] print u"2 番目以降の要素のリスト: ", a[1:] print u"最後の要素: ", a[-1] print u"最後の要素よりも前にある要素のリスト", a[:-1]
他の言語では
LISP – Wikipedia によると、
LISPは当初IBM 704上で実装されたが、その計算機上の2つの命令がLISPの基本操作
car
(Contents of Address Register)、cdr
(Contents of Decrement Register)になった。 ほとんどのLISPの方言において、car
とcdr
はそれぞれlistの最初の要素と、最初の要素以外を返す操作である。
Ruby には、Array - Rubyリファレンスマニュアル に要素の先頭と末尾を取得するための first, last がある。
Haskell では、head, tail と init, last 。(cf. Haskell で リストの n 番目の要素を取得 – PreludeList の !! )
リスト処理関数 によると、Scheme には、
carはリストの先頭の要素,cdrはリストの先頭の要素を除いたリストを返すと考えてもよい.これらに加えて,2番目の要素を返すcadr,3番目以降要素を含むリストを返すcddr,先頭の要素がリストであるときに,その先頭の要素を返すcaar などの関数など,4つまでのaかdを含む関数がシステムに用意されている.
スライスオブジェクト
3.2 標準型の階層 の内部型 (internal type) に、
スライス (slice) オブジェクト スライスオブジェクトは 拡張スライス構文 (extended slice syntax) が使われた際にスライスを表現するために使われます。拡張スライス構文とは、二つのコロンや、コンマで区切られた複数のスライスや省略符号 (ellipse) を使ったスライスで、例えば a[i:j:step]
、a[i:j, k:l]
、あるいはa[..., i:j]
です。スライスオブジェクトは組み込み関数 slice() で生成されます。 (…)
「要素へアクセスするための特殊メソッド」で実装した __getitem__(self, key) が関係している。
0コメント:
コメントを投稿