16 角括弧の内側にリストを定義することで、新しいリストを作成できます。
41 list() 関数でも新しいリストを作成できます。
53 aList = list(10) # aList は 10 項目を有しています。
55 .. note:: リストのインデックスは 1 が始点となります。
63 Add() 関数はリストへ新しい項目を追加します。
92 aList = 1:10 # 1 ~ 10 までの数値を有するリストを作成します。
93 aList + 11 # リストへ数値 11 を追加
102 len() 関数はリストのサイズを取得します。
114 aList = 1:20 see len(aList) # 20 を表示
122 del() 関数はリストから項目を削除します。
134 aList = ["one","two","other","three"]
135 Del(aList,3) # 3 番目の項目を削除
136 see aList # one two three を表示
145 リストから項目を取得するには、この文法を使用します。
155 aList = ["Cairo","Riyadh"]
156 see "Egypt : " + aList[1] + nl +
157 "KSA : " + aList[2] + nl
165 リストの項目へ値を代入するには、この文法を使用します。
169 List[Index] = Expression
175 aList = list(3) # 三項目を有するリストを作成します。
176 aList[1] = "one" aList[2] = "two" aList[3] = "three"
185 Find() 関数はリスト内の項目を検索します。
191 Find(List,ItemValue) ---> 項目のインデックス
192 Find(List,ItemValue,nColumn) ---> nColumn を検索して項目のインデックスを返します。
193 Find(List,ItemValue,nColumn,cAttribute) ---> 項目のインデックス
199 aList = ["one","two","three","four","five"]
200 see find(aList,"three") # 3 を表示
210 see find(mylist,"two",1) + nl # 2 を表示
211 see find(mylist,2,2) + nl # 2 を表示
213 また binarysearch() 関数は整列されたリストを検索します。
219 BinarySearch(List,ItemValue) ---> 項目のインデックス
220 BinarySearch(List,ItemValue,nColumn) ---> nColumn を検索して項目のインデックスを返します。
226 aList = ["one","two","three","four","five"]
228 see binarysearch(aList,"three")
253 Sort(List) ---> 整列されたリスト
254 Sort(List,nColumn) ---> nColumn に基づいて整理されたリスト
255 Sort(List,nColumn,cAttribute) ---> 属性に基づいて整列されたリスト
261 aList = [10,12,3,5,31,15]
262 aList = sort(aList) see aList # 3 5 10 12 15 31 を表示
270 mylist = ["mahmoud","samir","ahmed","ibrahim","mohammed"]
271 see mylist # 整列前のリストを表示
272 mylist = sort(mylist) # リストの整列
273 see "list after sort"+nl
274 see mylist # ahmed ibrahim mahmoud mohammed samir を表示
282 aList = [ ["mahmoud",15000] ,
285 ["mohammed", 12000 ] ,
288 aList2 = sort(aList,1)
313 Reverse() 関数はリストを反転します。
319 Reverse(List) ---> 反転されたリスト
325 aList = [10,20,30,40,50]
326 aList = reverse(aList)
327 see aList # 50 40 30 20 10 を表示
335 Insert() 関数はリストへ項目を挿入します。
341 Insert(List,Index,Item)
343 **\インデックスの後**\ に項目を挿入します。
349 aList = ["A","B","D","E"]
350 insert(aList,2,"C") # インデックス 2 の後に位置 3 へ "C" を挿入します。
351 see aList # A B C D E を表示
354 また、 insert(aList, 0 ,Value) で **\リストの先頭位置 (最初)**\に項目を挿入します
359 insert(aList,0,0) // リスト、先頭位置 (0)、挿入する項目のデータ
360 See aList # 0 ~ 5 までの数値を表示します。
375 aList = [ 1 , [10,20,30] , 5 , [100,1000,5000] ]
385 see aList[2] # 10 20 30 を表示
386 see aList[4][3] + nl # 5000 を表示
387 see aList2[5][2] + nl # four を表示
388 see aList2[5][4][3] # 300 を表示
396 代入演算子はリスト (入れ子リストも含む) をコピーします。
411 aList2 = aList # aList から aList2 へコピー
412 aList2[5] = "other" # 項目番号 five を変更
413 see aList2[5] + nl # other を表示
414 see aList[5] # three four five 100 200 300 を表示
423 リストは `第一級オブジェクト <https://ja.wikipedia.org/wiki/第一級オブジェクト>`_ であるため、リストへ変数を格納したり、関数へリストを渡したり、さらに関数からリストを返せます。
429 aList = duplicate( [1,2,3,4,5] )
430 see aList[10] + nl # 5 を表示
432 see mylist() # 10 20 30 40 50 を表示
441 func mylist return [10,20,30,40,50]
444 pair: リスト; リストを定義時に使用するには
447 ============================
449 初回にリストを定義するときに、リスト項目を使用します。
455 aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
456 see aList # 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 を表示
460 pair: リスト; リストを関数へ渡すには
463 ======================
465 リストは参照渡しにより関数へ渡されるため、呼び出された関数側でリストの処理や変更ができます。
472 aList = [1,2,3,4,5] # Main 関数内でローカルなリストを作成します。
473 myfunc(aList) # リストを参照渡しにすることで、関数を呼び出します。
474 see aList # 1 2 3 4 5 6 7 8 9 10 を表示します。
481 pair: リスト; 文字列インデックスによるリストへのアクセス
483 文字列インデックスによるリストへのアクセス
484 ==========================================
486 項目のインデックスを数値で決定することで、項目の値の設定または項目を取得できますが、
487 二つの項目を有するリストであり、かつ最初の項目が文字列から構成されている項目ならば、
488 文字列インデックスで項目へアクセスできます。
494 aList = [ ["one",1] , ["two",2] , ["three",3] ]
495 see aList["one"] + nl +
497 aList["three"] # 1 2 3 の表示
499 この種類のリストは演算子 : および = で定義したほうがより優れたシンタックスになります。
505 aList = [ :one = 1 , :two = 2 , :three = 3 ]
506 see aList["one"] + nl +
508 aList["three"] + nl # 1 2 3 の表示
509 see aList[1] # one 1 表示
511 .. tip:: 識別子 (単語) の先頭に : (コロン) を付けるとリテラルとして扱われます。
513 .. note:: = で二つの項目を有するリストを定義すると最初の項目は左辺となり、
516 文字列インデックスでリストへ新しい項目を追加できます。
523 aList["Egypt"] = "Cairo"
524 aList["KSA"] = "Riyadh"
525 see aList["Egypt"] + nl + # Cairo を表示
526 aList["KSA"] + nl # Riyadh を表示
529 pair: リスト; リストによる仮引数または実引数の渡しかた
532 ========================================
534 この種類のリストでは、仮引数の順序は重要ではないため、
535 関数へ渡すための仮引数としては非常に優れています (順序の変更ができます)。
537 仮引数は、オプション扱いの場合があります。
543 myconnect ( [ :server = "myserver.com" , :port = 80 ,
544 :username = "mahmoud" , :password = "password" ] )
546 func myconnect mypara
549 see "User Name : " + mypara[:username] + nl +
550 "Password : " + mypara[:password] + nl +
551 "Server : " + mypara[:server] + nl +
552 "Port : " + mypara[:port]
554 pair: リスト; リスト配列による仮引数または実引数の渡しかた
556 リスト配列による仮引数または実引数の渡しかた
557 ============================================
559 配列形式により、関数へ仮引数また実引数を渡します。
565 myList = [5,7,3,9] ### 配列は実引数または仮引数のリストです。
567 See "Sum result: "+ result +n
571 sizeList = len(aList)
573 for i = 1 to sizeList
581 リスト: リストまたはハッシュテーブルを引数として返すには
583 リストまたはハッシュテーブルを引数として返すには
584 ================================================
586 関数から配列またはハッシュ形式で引数を返します。
596 aOutput = myFunctionArray(sudoku)
597 See "Return Array: T/F: "+ aOutput[1] +" Row: "+ aOutput[2] +" Col: "+ aOutput[3] +nl
599 aOutput = myFunctionHash(sudoku)
600 See "Return Hash.: T/F: "+ aOutput[:lValue] +" Row: "+ aOutput[:nRow] +" Col: "+ aOutput[:nCol] +nl
602 ###--------------------------------
603 ### isSolvedSoduku - 配列を返します
605 Func myFunctionArray(sudoku)
608 if sudoku[Row][Col] = 0
610 //-----------------------------
612 return [False, Row, Col]
616 return [True, Row, Col]
618 ###------------------------------------
619 ### isSolvedSoduku - ハッシュを返します
621 Func myFunctionHash(sudoku)
624 if sudoku[Row][Col] = 0
626 //-----------------------------------------
627 // 三要素から成るハッシュテーブルを返します
628 return [ :lValue = False,
636 return [ :lValue = False, :nRow = Row, :nCol = Col ]
638 ###-----------------------------
641 pair: リスト; リストと再帰による多次元配列の作成方法
644 ======================================
646 指定の大きさによる多次元配列でも関数の再帰で作成できます。
652 ###---------------------------------------------------------------------------------
653 ### 配列の作成 -- 指定の大きさの次元: 三次元、四次元、五次元など
656 bList = createDimList(dimList)
658 ###---------------------------------------------------------------------------------
659 ### 1 のカウンタを使用して配列へ代入 , 4x4x4 = 256 , 2x3x4x5x6 = 720
663 for Col=1 to dimList[1]
664 for Row=1 to dimList[2]
665 for Dep=1 to dimList[3]
666 blist[Col][Row][Dep] = Counter
672 ###---------------------------------------------------------------------------------
673 ### ブロック形式で配列の要素を表示します。
675 for Col=1 to dimList[1]
676 for Row=1 to dimList[2]
677 for Dep=1 to dimList[3]
678 See bList[Col][Row][Dep] See " "
685 ###=================================================================================
688 ###---------------------------------------------------------------------------------
689 ### 次元をもつ配列を再帰的に作成します。
690 ### 配列の次元を渡すことで呼び出します: dimList = [2,3,4,5]
691 ### 最初のエントリーで全ての反復呼び出しの降下を行い newParms を作成します。
694 ### dimList = [4,2,3,2] <<< 配列形式による次元の大きさと数値です。
695 ### bList = createDimList(dimList) <<< 入力からの配列を使用して呼び出します。
697 func createDimList(dimArray)
699 sizeList = len(dimArray)
702 for i = 2 to sizeList
703 Add(newParms, dimArray[i])
706 alist = list(dimArray[1])
713 t = createDimList(newParms)
725 Swap() 関数はリスト項目を交換します。
731 aList = [:one,:two,:four,:three]
733 see copy("*",50) + nl
745 **************************************************