Python(リスト)

旧2-3.Perl/Python/Ruby毎日学習

多要素を入れる入れ物を配列と呼んだりリストと呼んだり、各言語で言葉の意味が異なってるのがものすごくややこしいのですが、それぞれの思想なんでしょうね。

Perlでリストというと、

(1,2,3,4)

("aaa","bbb","ccc")

といった値を並べて()で囲ったものを指し、配列は、入れ物のことを指します。

@arr = (1,2,3);

左の@arrが配列、右の(1,2,3)がリストですね。

Rubyは、というと、[]で作成できるのはArrayオブジェクトというぐらいだから、配列と呼んでるようですが、リストという呼び方は見かけたことがありません。
各言語何がどう違うのかというのは、そのうち調べていくことにして、Pythonでは複数の要素を入れる入れ物はリストで、このように定義できます。

takk@deb9:~$ python
(省略)
>>> a = [1,2,3]
>>> a
[1, 2, 3]
>>>

定義方法は、Rubyの配列にそっくりです。

takk@deb9:~$ irb --simple-prompt
>> a = [1,2,3]
=> [1, 2, 3]
>> a
=> [1, 2, 3]
>>

範囲を指定して初期化するのはちょいと難しいです。

>>> a=[i for i in range(1,11)]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>

3.xですが、rangeだけだとrangeそのものが格納されてしまいます。

>>> a = range(1,11)
>>> a
range(1, 11)
>>>

2.7.xはこのように初期化できてしまいます。

takk@deb9:~$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = range(1,11)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>

2.7.xでも3.xでも使える書き方の方を覚えておきたいです。
a = [i for i in range(1,11)]

要素の参照は、Perl、Rubyと同じく[]を使います。

>>> a = [i for i in range(1,11)]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a[3]
4

範囲を参照するにはスライスを使います。[インデックス:インデックス+1]で指定します。

>>> a[3:3]
[]
>>> a[3:4]
[4]
>>> a[3:5]
[4, 5]
>>>

コメント

タイトルとURLをコピーしました