PukiWiki


配列 の変更点


*配列 [#pf4a3ade]
**Javascript [#wef12743]
 var beatles = Array( "John", "Paul", "George", "Ringo" );
 var names = [ "Ringo", "John", "George", "Paul" ];

**Perl [#oef1fcdc]
 #!/usr/bin/perl
 
 # 初期化
 @a = (1,2,3);
 
 print $a[0]."\n";
 
 print "Length : " . ($#a + 1) . "\n"; 
 
 $a[3] = 4;
 
 print "Length : " . ($#a+1) . "\n";
 
 foreach $t (@a) {
         print $t;
 }
 print "\n";

**Python [#u3902efe]
***タプル [#ve2800e3]
変更不可な配列 ( と )でくくる。
 >>> t=1,2
 >>> t
 (1, 2)
 >>> x,y = t
 >>> x
 1
 >>> y
 2

じつは()でくくらなくてもいい。



***リスト [#bf0bc97e]
変更可能な配列 [ と ]でくくる。
 [1,2,3]

 >>> a = ['spam', 'eggs', 100, 1234]
 >>> a
 ['spam', 'eggs', 100, 1234]
 
 >>> a[0]
 'spam'
 >>> a[3]
 1234
 >>> a[-2]
 100
 >>> a[1:-1]
 ['eggs', 100]
 >>> a[:2] + ['bacon', 2*2]
 ['spam', 'eggs', 'bacon', 4]
 >>> 3*a[:3] + ['Boo!']
 ['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boo!']

リストは変更できる。
 >>> a
 ['spam', 'eggs', 100, 1234]
 >>> a[2] = a[2] + 23
 >>> a
 ['spam', 'eggs', 123, 1234]

スライスを利用して変更
 >>> # いくつかの項目を置換する:
 ... a[0:2] = [1, 12]
 >>> a
 [1, 12, 123, 1234]
 >>> # いくつかの項目を除去する:
 ... a[0:2] = []
 >>> a
 [123, 1234]
 >>> # いくつかの項目を挿入する:
 ... a[1:1] = ['bletch', 'xyzzy']
 >>> a
 [123, 'bletch', 'xyzzy', 1234]
 >>> # それ自身 (のコピー) を先頭に挿入する
 >>> a[:0] = a
 >>> a
 [123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
 >>> # リストをクリアする: 全てのアイテムを空のリストに置換する
 >>> a[:] = []
 >>> a
 []
長さはlen()で取得
 >>> a = ['a', 'b', 'c', 'd']
 >>> len(a)
 4
***リスト用のメソッド例 [#kbe1c7d5]
 >>> a = [66.25, 333, 333, 1, 1234.5]
 >>> print a.count(333), a.count(66.25), a.count('x')
 2 1 0
 >>> a.insert(2, -1)
 >>> a.append(333)
 >>> a
 [66.25, 333, -1, 333, 1, 1234.5, 333]
 >>> a.index(333)
 1
 >>> a.remove(333)
 >>> a
 [66.25, -1, 333, 1, 1234.5, 333]
 >>> a.reverse()
 >>> a
 [333, 1234.5, 1, 333, -1, 66.25]
 >>> a.sort()
 >>> a
 [-1, 1, 66.25, 333, 333, 1234.5]

***リストで使うと便利な組み込み関数 [#n8089cc3]
****filter [#v2373ec3]
 >>> def f(x): return x % 2 != 0 and x % 3 != 0
 ...
 >>> filter(f, range(2, 25))
 [5, 7, 11, 13, 17, 19, 23]
range(2,25)の中からfが真になるリストを返す。

****map [#ud3f6734]
 >>> def cube(x): return x*x*x
 ...
 >>> map(cube, range(1, 11))
 [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
***リストの内包表記 [#t86a2350]
[式 for節 if節]
 >>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
 >>> [weapon.strip() for weapon in freshfruit]
 ['banana', 'loganberry', 'passion fruit']
 >>> vec = [2, 4, 6]
 >>> [3*x for x in vec]
 [6, 12, 18]
 >>> [3*x for x in vec if x > 3]
 [12, 18]
 >>> [3*x for x in vec if x < 2]
 []
 >>> [[x,x**2] for x in vec]
 [[2, 4], [4, 16], [6, 36]]

**Ruby [#w8a59bd4]
[と]でくくる。
 a = [1, 2, 3]
 b = ["aaa", "bbb", "ccc"]


 a = [1,2,3,"aaa","bbb"]
 
 # 長さ取得
 puts a.length #=> 5
 
 # 要素にアクセス
 puts a[1] #=> 2
 
 # マイナスで後ろから指定
 puts a[-2] #=>"aaa"
 
 # ..で範囲を指定
 puts a[2..4] #=> [3, "aaa", "bbb"]
 
 # ,で先頭と長さを指定
 puts a[3,2] #=> ["aaa", "bbb"]
 
 # join(区切り文字)で文字列をして出力
 puts a.join(" ") #=> "1 2 3 aaa bbb"
 
 # pushで最後に追加
 a.push("ccc")
 
 # popで最後を削除
 a.pop
 
 # unshiftで先頭に追加
 a.unshift(123)
 
 # shiftで先頭を削除
 a.shift
 
 # putsで出力すると1行づつ出力
 puts a
 
 # pで出力するとそれなりに出力
 p a