「逆引きPython/リスト」の編集履歴(バックアップ)一覧はこちら

逆引きPython/リスト」(2009/08/08 (土) 17:45:08) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

#contents(fromhere=true) **リストを定義する リストは入れ子にすることもできます。下の例は浅いコピーであることに注意してください。 >>> food = ["SPAM","Egg","Bacon"] >>> value = [120,80,150] >>> l = [34, food, value] >>> print(l) [34, ['SPAM', 'Egg', 'Bacon'], [120, 80, 150]] >>> l[0] 34 >>> l[1][2] 'Bacon' >>> l[2][0] 120 **リストの要素数を取得する >>> l = [10,20,30,40,50] >>> len(l) 5 >>> l =[10,[20,30],[40,50]] >>> len(l) 3 **リストに要素を追加する list.append()やlist.extend()で要素を追加できます。スライスやlist.insert()を用いて挿入することも可能です。 >>> l = [1,2,3,4,5] >>> l.append(6) >>> print(l) [1, 2, 3, 4, 5, 6] >>> l.extend([7,8]) >>> print(l) [1, 2, 3, 4, 5, 6, 7, 8] >>> l[2:2] = [10,20,30] >>> print(l) [1, 2, 10, 20, 30, 3, 4, 5, 6, 7, 8] >>> l = [1,2,3,4,5] >>> l.insert(2,10) >>> print(l) [1, 2, 10, 3, 4, 5] **リストから要素を取り出す list.pop()を用いて要素を取り出します。引数を指定しないと末尾から取り出します。 >>> l = [1,2,3,4,5] >>> l.pop() 5 >>> print(l) [1, 2, 3, 4] >>> l.pop(0) 1 >>> print(l) [2, 3, 4] **部分リストを取り出す >>> l = [1,2,3,4,5] >>> l[1] 2 >>> l[1:3] [2, 3] >>> l[1:5:2] [2, 4] **リストから要素を削除する delを用いて要素を削除できます。スライスと代入を用いることも可能です。 >>> l = [1,2,3,4,5] >>> del l[2:4] >>> print(l) [1, 2, 5] >>> l[:] = [] >>> print(l) [] **リストを結合する >>> l = [1,2,3,4,5] >>> l + ["a","b"] [1, 2, 3, 4, 5, 'a', 'b'] >>> print(l) [1, 2, 3, 4, 5] >>> l += [10,20] >>> print(l) [1, 2, 3, 4, 5, 10, 20] **リストをソートする list.sort()でリストをソートします。これはリスト自身を更新します。 >>> l = [2,4,3,5,1] >>> l.sort() >>> print(l) [1, 2, 3, 4, 5] >>> l = ["SPAM","Egg","Bacon"] >>> l.sort() >>> print(l) ['Bacon', 'Egg', 'SPAM'] **リストを指定した条件でソートする リストのソートには条件を与えることもできます。 >>> l = ["SPAM","Egg","Bacon"] >>> func = lambda x: len(x) >>> l.sort(key=func) >>> print(l) ['Egg', 'SPAM', 'Bacon'] >>> l = [[1,3],[0,2],[4,8]] >>> func = lambda x: x[1] >>> l.sort(key=func) >>> print(l) [[0, 2], [1, 3], [4, 8]] **リストを逆順にする >>> l = [1,2,3,4,5] >>> l.reverse() >>> print(l) [5, 4, 3, 2, 1] **リストから一致する要素を削除する list.remove()を用いると、一致する要素を先頭から一つ削除できます。 >>> l = ["SPAM","Egg","SPAM","Bacon"] >>> l.remove("SPAM") >>> print(l) ['Egg', 'SPAM', 'Bacon'] 一致する要素をすべて削除するにはlist.count()と組み合わせるとよいでしょう。 >>> l = ["SPAM","Egg","SPAM","Bacon"] >>> while l.count("SPAM") > 0: ... l.remove("SPAM") ... >>> print(l) ['Egg', 'Bacon'] **リストから重複する要素を削除する リストから重複する要素を削除するには、いったんリストから集合にし、またリストに戻す方法があります。しかしこの方法では要素がソートされたようになります。Rubyのuniqのようにしたいのであれば、以下のようにすればよいでしょう。 >>> ol = [3,2,4,1,2,1,3,4,3,1,4,2] >>> list(set(ol)) [1, 2, 3, 4] >>> s = set() >>> ul = list() >>> for x in ol: ... if x not in s: ... ul.append(x) ... s.add(x) ... >>> >>> print(ul) [3, 2, 4, 1] **リストから指定条件を満たす要素を抽出する 簡単な条件であればリスとの内包表記を用いて以下のように記述できます。 >>> l = [20,40,30,10,50] >>> [x for x in l if x > 20] [40, 30, 50] **リスト中の一致する要素の数を数える >>> l = ["SPAM","Egg","SPAM","Bacon"] >>> l.count("SPAM") 2 **リスト中の要素を探す >>> l = [1,2,"SPAM",["Egg","Bacon"]] >>> l [1, 2, 'SPAM', ['Egg', 'Bacon']] >>> l.index(2) 1 >>> l.index("SPAM") 2 >>> l.index(["Egg","Bacon"]) 3 **リストから新しいリストを作成する filter()やmap()を使うことができます。下はリストの内包表記を用いた例です。 >>> l = [1,2,3,4,5] >>> [10*x for x in l] [10, 20, 30, 40, 50] **リストの各要素に対して処理を行う >>> l = [1,2,3,4,5] >>> for x in l: ... print(x*x) ... 1 4 9 16 25 **リストの要素をランダムに抽出する >>> import random >>> l = [1,2,3,4,5] >>> random.choice(l) 4 >>> random.choice(l) 1 >>> random.choice(l) 5 **リストをシャッフルする >>> import random >>> l = [1,2,3,4,5] >>> random.shuffle(l) >>> print(l) [4, 1, 2, 5, 3] **リストから配列を作る array(配列)はリストと同じシーケンス型ですが、保持する要素は単一の型に制限されています。 >>> import array >>> l = [1,2,3,4,5] >>> a = array.array("i") #signed intを値に持つ配列の作成 >>> print(l) array('i') >>> a.fromlist(l) #リストの要素を配列に追加 >>> print(l) array('i', [1, 2, 3, 4, 5]) ----
#contents(fromhere=true) **リストを定義する リストは入れ子にすることもできます。下の例は浅いコピーであることに注意してください。 >>> food = ["SPAM","Egg","Bacon"] >>> value = [120,80,150] >>> l = [34, food, value] >>> print(l) [34, ['SPAM', 'Egg', 'Bacon'], [120, 80, 150]] >>> l[0] 34 >>> l[1][2] 'Bacon' >>> l[2][0] 120 **リストの要素数を取得する >>> l = [10,20,30,40,50] >>> len(l) 5 >>> l =[10,[20,30],[40,50]] >>> len(l) 3 **リストに要素を追加する list.append()やlist.extend()で要素を追加できます。スライスやlist.insert()を用いて挿入することも可能です。 >>> l = [1,2,3,4,5] >>> l.append(6) >>> print(l) [1, 2, 3, 4, 5, 6] >>> l.extend([7,8]) >>> print(l) [1, 2, 3, 4, 5, 6, 7, 8] >>> l[2:2] = [10,20,30] >>> print(l) [1, 2, 10, 20, 30, 3, 4, 5, 6, 7, 8] >>> l = [1,2,3,4,5] >>> l.insert(2,10) >>> print(l) [1, 2, 10, 3, 4, 5] **リストから要素を取り出す list.pop()を用いて要素を取り出します。引数を指定しないと末尾から取り出します。 >>> l = [1,2,3,4,5] >>> l.pop() 5 >>> print(l) [1, 2, 3, 4] >>> l.pop(0) 1 >>> print(l) [2, 3, 4] **部分リストを取り出す >>> l = [1,2,3,4,5] >>> l[1] 2 >>> l[1:3] [2, 3] >>> l[1:5:2] [2, 4] **リストから要素を削除する delを用いて要素を削除できます。スライスと代入を用いることも可能です。 >>> l = [1,2,3,4,5] >>> del l[2:4] >>> print(l) [1, 2, 5] >>> l[:] = [] >>> print(l) [] **リストを結合する >>> l = [1,2,3,4,5] >>> l + ["a","b"] [1, 2, 3, 4, 5, 'a', 'b'] >>> print(l) [1, 2, 3, 4, 5] >>> l += [10,20] >>> print(l) [1, 2, 3, 4, 5, 10, 20] **リストをソートする list.sort()でリストをソートします。これはリスト自身を更新します。 >>> l = [2,4,3,5,1] >>> l.sort() >>> print(l) [1, 2, 3, 4, 5] >>> l = ["SPAM","Egg","Bacon"] >>> l.sort() >>> print(l) ['Bacon', 'Egg', 'SPAM'] **リストを指定した条件でソートする リストのソートには条件を与えることもできます。 >>> l = ["SPAM","Egg","Bacon"] >>> func = lambda x: len(x) >>> l.sort(key=func) >>> print(l) ['Egg', 'SPAM', 'Bacon'] >>> l = [[1,3],[0,2],[4,8]] >>> func = lambda x: x[1] >>> l.sort(key=func) >>> print(l) [[0, 2], [1, 3], [4, 8]] **リストを逆順にする >>> l = [1,2,3,4,5] >>> l.reverse() >>> print(l) [5, 4, 3, 2, 1] **リストから一致する要素を削除する list.remove()を用いると、一致する要素を先頭から一つ削除できます。 >>> l = ["SPAM","Egg","SPAM","Bacon"] >>> l.remove("SPAM") >>> print(l) ['Egg', 'SPAM', 'Bacon'] 一致する要素をすべて削除するにはlist.count()と組み合わせるとよいでしょう。 >>> l = ["SPAM","Egg","SPAM","Bacon"] >>> while l.count("SPAM") > 0: ... l.remove("SPAM") ... >>> print(l) ['Egg', 'Bacon'] **リストから重複する要素を削除する リストから重複する要素を削除するには、いったんリストから集合にし、またリストに戻す方法があります。しかしこの方法では要素がソートされたようになります。Rubyのuniqのようにしたいのであれば、以下のようにすればよいでしょう。 >>> ol = [3,2,4,1,2,1,3,4,3,1,4,2] >>> list(set(ol)) [1, 2, 3, 4] >>> s = set() >>> ul = list() >>> for x in ol: ... if x not in s: ... ul.append(x) ... s.add(x) ... >>> >>> print(ul) [3, 2, 4, 1] **リストから指定条件を満たす要素を抽出する 簡単な条件であればリスとの内包表記を用いて以下のように記述できます。 >>> l = [20,40,30,10,50] >>> [x for x in l if x > 20] [40, 30, 50] **リスト中の一致する要素の数を数える >>> l = ["SPAM","Egg","SPAM","Bacon"] >>> l.count("SPAM") 2 **リスト中の要素を探す >>> l = [1,2,"SPAM",["Egg","Bacon"]] >>> l [1, 2, 'SPAM', ['Egg', 'Bacon']] >>> l.index(2) 1 >>> l.index("SPAM") 2 >>> l.index(["Egg","Bacon"]) 3 **リストから新しいリストを作成する filter()やmap()を使うことができます。下はリストの内包表記を用いた例です。 >>> l = [1,2,3,4,5] >>> [10*x for x in l] [10, 20, 30, 40, 50] **リストの各要素に対して処理を行う >>> l = [1,2,3,4,5] >>> for x in l: ... print(x*x) ... 1 4 9 16 25 **リストの要素をランダムに抽出する >>> import random >>> l = [1,2,3,4,5] >>> random.choice(l) 4 >>> random.choice(l) 1 >>> random.choice(l) 5 **リストをシャッフルする >>> import random >>> l = [1,2,3,4,5] >>> random.shuffle(l) >>> print(l) [4, 1, 2, 5, 3] **リストから配列を作る array(配列)はリストと同じシーケンス型ですが、保持する要素は単一の型に制限されています。型コードには"c"や"i"、"f"、"d"があり、それぞれC言語のchar、int、float、doubleに対応します。 >>> import array >>> l = [1,2,3,4,5] >>> a = array.array("i") #型コードに"i"を指定してintを値に持つ配列の作成 >>> print(l) array('i') >>> a.fromlist(l) #リストの要素を配列に追加 >>> print(l) array('i', [1, 2, 3, 4, 5]) ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: