コンテナ型
4種類の組み込みデータ構造(コンテナ型)
リスト:list=>[val1,val2,val3,val4]
タプル:tuple=>(val1,val2,val3,val4)
辞書:dict=>{key1:val1,key2:val2}
集合:set=>{key1,key2,key3,key4}
一。リスト(list)#
リストは一連の順序付きアイテムを処理するためのデータ構造です
リストはPythonで最も柔軟な順序付きコレクションオブジェクトのタイプです
リストは任意のタイプのオブジェクトを含むことができます:文字列、数字、さらには他のリスト
リストは可変データ型であり、このタイプの値は変更可能です
例:ショッピングリストを表す
goods=['牛乳'、'運動靴'、'コーヒー'、'携帯電話'、'羊肉'、'ぶどう'、'オレンジ']
リストは角括弧内でカンマで区切られたアイテムで定義されます
# 例
# 空のリストを定義
>>> lst = []
>>> type(lst)
<class 'list'>
>>> lst2 = list() # 注:ファクトリ関数
>>> type(lst2)
<class 'list'>
# リストにはPythonの任意のオブジェクトを格納できます:
>>> lst3 = list("abc") # 注:文字列
>>> lst3
['a', 'b', 'c']
>>> lst = [1,'abc',2.5,True]
>>> lst = [1,'abc',2.5,True,lst3] # 注:他のリスト
>>> lst
[1, 'abc', 2.5, True, ['a', 'b', 'c']]
リストの基本操作#
インデックス#
インデックスを使用してリスト内の要素にアクセスします。インデックスは 0 から始まり、1 つの要素を取得できます。
# 例
>>> lst = [1,2,3]
>>> id(lst)
140078683813384
>>> lst += [4]
>>> id(lst)
140078683813384 # 注:メモリアドレスは変わりません
>>> lst[0]
1
>>> lst[0] = "a" # 注:リスト内の要素の値を変更
>>> id(lst)
140078683813384
# インデックスは範囲外にできません(Index Error:list index out of range)
>>> lst
['b', 2, 3, 4]
>>> lst[4] # 注:インデックスが範囲外でエラーが発生します
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
スライス#
スライスはインデックスを使用してリスト内の要素にアクセスし、サブリストを取得できます
開始と終了の範囲:[ start,end )
ステップ:デフォルト=>1
start:デフォルト=>ステップが正の場合、startは0;ステップが負の場合、startは-1
end:デフォルト=>ステップが正の場合、endはリストの末尾;ステップが負の場合、endはリストの開始
注意:3つの値はすべてオプションです
# 例:正のスライス
>>> a = [1,2,3,4,5,6]
>>> a[0:4] # 注:スライス、最初の4つ
[1, 2, 3, 4]
>>> str = "123456"
>>> str[0:4] # 注:スライス、最初の4つ
'1234'
>>> a[:4] # 注:同じ効果
[1, 2, 3, 4]
# 例:負のスライス、ステップは-1
>>> a = [1,2,3,4,5,6]
>>> a[-1:3:-1] # 注:-1は6を指し、3は4を指し、-1は右から左に
[6, 5]
>>> a[-1:-4:-1] # 注:-1は6を指し、-4は3を指し、-1は右から左に
[6, 5, 4]
>>> a[-1:-44:-1] # 注:-1は6を指し、-44は範囲外、-1は右から左に
[6, 5, 4, 3, 2, 1]
>>> a[-1:4:-1] # 注:-1は6を指し、4は5を指し、-1は右から左に
[6]
>>> a[-3:4:-1] # 注:-3は4を指し、4は5を指し、4は左に取れません
[] # 注:空です。開始位置が誤っている場合、スライスは空になります(エラーは発生しません)
スライスオブジェクト(slice関数)
slice関数の用途:スライスオブジェクトを生成し、スライスする内容に名前を付けることができます。
# 例
>>> a = ["a","b","c","d"]
>>> a
['a', 'b', 'c', 'd']
>>> b = [1,2,3,4,5,6]
>>> s1 = slice(0,3,1) # 注:参照時に引数を渡す必要があります
>>> a[s1] # 注:スライス 最初の3つ
['a', 'b', 'c']
>>> b[s1] # 注:スライス 最初の3つ
[1, 2, 3]
>>> c = ["xx","yy","zz","ee"]
>>> c[s1] # 注:スライス 最初の3つ
['xx', 'yy', 'zz']
追加#
リスト要素を追加する方法
append:末尾に追加、全体として追加、タイプは制限なし
insert:インデックス位置に要素を挿入
extend:リストを拡張
# 例
# append
>>> a = ["apple", "orange", 123, 0.1111, "cali"]
>>> a.append("test") # 注:文字列を追加
>>> a
['apple', 'orange', 123, 0.1111, 'cali', 'test']
>>> lst = ['a','b','c']
>>> lst2 = [1,2,3]
>>> lst.append(lst2) # 注:追加されたタイプは配列です
>>> lst
['a', 'b', 'c', [1, 2, 3]] # 注:追加されたタイプは配列です
# insert
>>> lst = ['a','b','c']
>>> lst.insert(1,'d') # 注:2番目の要素の前にデータを挿入
>>> lst
['a', 'd', 'b', 'c']
# extend
>>> a = [1,2,3]
>>> str = "abc"
>>> a.extend(str) # 注:文字列を拡張
>>> a
[1, 2, 3, 'a', 'b', 'c']
extendと+
注意:リストに変換可能なタイプに限ります(str, list, tuple)
# 例
>>> a = ['a','b','c']
>>> a2 = [1,2,3]
>>> a.extend(a2)
>>> a
['a', 'b', 'c', 1, 2, 3]
>>> a + ["5"] # 注:+演算子はリストとリストのみを加算できます
['a', 'b', 'c', 1, 2, 3, '5']
>>> a
['a', 'b', 'c', 1, 2, 3] # 注:+演算子の実行後、配列aは変更されません
>>> b = a + ["5"] # 注:配列bに代入
>>> b # 注:配列bに代入することで変更を保存できます
['a', 'b', 'c', 1, 2, 3, '5']
>>> id(a)
140273972677768
>>> a += ["6"]
>>> id(a)
140273972677768 # 注:a += ["6"] メモリアドレスは変わりません オブジェクトは変わらず、内容が変更されます
>>> a = a + ["7"]
>>> id(a)
140273837551816 # 注:a = a + ["7"] メモリアドレスが変更されます
削除#
リスト要素を削除する方法
pop:要素を削除、デフォルトは最後の要素(指定インデックスで削除)
remove:指定された要素を削除(削除するデータが存在しない場合、エラーが発生します)
del:インデックスに基づいて削除
delはPythonのキーワードで、変数の参照を削除するために使用されます
clear:リストを空にします
# 例
# pop
>>> a.pop() # 注:デフォルトで最後の1つを削除
'7' # 注:戻り値、削除された要素
>>> a.pop(2) # 注:指定インデックス2で3番目の要素を削除
'c'
# remove
>>> a = ["xx","yy","xx"]
>>> a.remove("xx") # 注:指定された要素を削除、最初の1つのみを削除
>>> a
['yy', 'xx']
>>> a
['yy', 'xx']
>>> a.remove("zz") # 注:削除するデータが存在しない場合、エラーが発生します
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
# del
>>> a = [1,2,3,"xx","yy","zz"]
>>> del a[3] # 注:インデックス3の4番目を削除
>>> a
[1, 2, 3, 'yy', 'zz']
>>> del a[0:2] # 注:スライス削除
>>> c = 1
>>> del c # 注:delは変数の参照を削除します
>>> c
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'c' is not defined
# clear
>>> a
[3, 'yy', 'zz']
>>> a.clear()
>>> a
[] # 注:clearで空にします
修正#
要素の修正は主にインデックスとスライスを利用して行います。
# 例
>>> a = [1,2,3,'a','b','c']
>>> a
[1, 2, 3, 'a', 'b', 'c']
>>> a[2] = "x" # 注:要素を修正
>>> a
[1, 2, 'x', 'a', 'b', 'c']
>>> a[1:1] # 注:[1,1)
[] # 注:空です
>>> a[1:1] = "abc" # 注:開始位置インデックス1の前にリストを追加、str型をリストに変換
>>> a
[1, 'a', 'b', 'c', 2, 'x', 'a', 'b', 'c']
>>> b = ["a","b","c"]
>>> b[2:2] = ["x","y"] # 注:インデックス2の前にリストを追加
>>> b
['a', 'b', 'x', 'y', 'c']
>>> b[2:4] = ["x","y","z"] # 注:インデックス2、3の値を置き換え
>>> b
['a', 'b', 'x', 'y', 'z', 'c']
>>> b[1:5] = "12" # 注:スライスした後、再度リストに変換。str型をリストに変換
>>> b # 注:インデックス1、2、3、4の値を'1''2'に置き換え
['a', '1', '2', 'c']
>>> b
['a', '1', '2', 'c']
>>> b[5:-3]
[]
>>> b[3:-3] # 注:取得できません
[]
>>> b[3:-3] = "xy" # 注:この位置から他のリストに置き換え
>>> b # 注:見て、見つけた要素が空かどうか
['a', '1', '2', 'x', 'y', 'c']
>>> c = ["a","b","c","d","1"]
>>> c[1:4] = "hello" # 注:b c dを見つけ、bcdをh e l l oに置き換え
>>> c
['a', 'h', 'e', 'l', 'l', 'o', '1']
>>> c = ['a', 'h', 'e', 'l', 'l', 'o', '1']
>>> c[5:3] # 注:取得できません
[]
>>> c[5:3] = ["x","y"] # 注:c[5:3]は空で、o(インデックス5)の位置にx yを挿入
>>> c
['a', 'h', 'e', 'l', 'l', 'x', 'y', 'o', '1']
反転#
リストを反転 - reverse またはスライス
# 例
# 1.負のスライスで反転、出力の値を反転
>>> a = [1,2,3,4]
>>> a[::-1] # 注:負のスライス
[4, 3, 2, 1]
>>> a # 注:a自体の値は反転していません
[1, 2, 3, 4]
# 2.reverseで文字列を反転
>>> a
[1, 2, 3, 4]
>>> a.reverse()
>>> a # 注:a自体の値が反転
[4, 3, 2, 1]
ソート#
リストのソート - sort
# 例
>>> a
[4, 3, 2, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4] # 注:ソート後、a自体の値が変更されます
# 逆順ソート
a.sort(reverse=True)
>>> a
[1, 2, 3, 4]
>>> a.sort(reverse=True) # 注:逆順ソート、昇順から降順に変わります
>>> a
[4, 3, 2, 1] # 注:大きい順にソート
# intとstrの混合ソートはサポートされていません:
>>> a = ["a",1,"b",2]
>>> a.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
>>> a = ["a","1","b","2"]
>>> a.sort()
>>> a
['1', '2', 'a', 'b']
# コード順でソート
>>> a = ["a","1","b","2","A"]
>>> a
['a', '1', 'b', '2', 'A']
統計#
len、count、index
# 例
# len 総長
>>> a
['a', '中', '序', '排', '文']
>>> len(a)
5
>>> a.append([1,2,3])
>>> len(a)
6
>>> a
['a', '中', '序', '排', '文', [1, 2, 3]]
>>> a.extend([1,2,3])
>>> len(a)
9
# count要素の出現回数をカウント
>>> a
['a', '中', '序', '排', '文', [1, 2, 3], 1, 2, 3]
>>> a.count("a")
1
>>> a.count(1)
1
# index要素のインデックス位置を返す
>>> a = ["x","y","x",1]
>>> a.count("x")
2
>>> a.index("x")
0
>>> a.index("z") # 注:indexは要素を使ってインデックスを探し、存在しない場合はエラーが発生します
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'z' is not in list
繰り返し#
繰り返し:オブジェクト内の各データを順に取得します
list は反復可能なオブジェクト(iterable)であり、for を使って直接繰り返すことができます
# 1.for i in a:
>>> a
['x', 'y', 'x', 1]
>>> for i in a:
... print(f"item is --->{i}")
...
item is --->x
item is --->y
item is --->x
item is --->1
# 2.enumerate()関数
# 特徴:タプルを返し、タプルには各インデックスと値が含まれます
# 注:1つのiを使って繰り返し、タプルを取得します
>>> for i in enumerate(a):
... print(f"item is --->{i}")
...
item is --->(0, 'x')
item is --->(1, 'y')
item is --->(2, 'x')
item is --->(3, 1)
# 2つの一時変数を使って、enumerate(a)タプルの戻り値を取得します
>>> for i,j in enumerate(a):
... print(f"{i}-->{j}")
...
0-->x
1-->y
2-->x
3-->1
メンバーシップの判断#
リスト内に特定のデータがあるかどうかを判断します
# 例
>>> lst = ['a','b','c','d']
>>> print('a' in lst)
True
>>> print('x' in lst)
False
>>> s = 'a'
>>> print(s, 'は' if s in lst else 'はない','リストに')
a は リストに
型変換#
文字列(str)をリスト(list)に変換
# 例
>>> str = 'abc 123'
>>> list(str)
['a', 'b', 'c', ' ', '1', '2', '3']
二。タプル(tuple)#
タプルは一連の順序付きアイテムを処理するためのデータ構造です
タプルは文字列と同様に変更不可能であり、タプルを変更することはできません
タプルは任意のタイプのオブジェクトを含むことができます:文字列、数字、さらには他のリスト
適応シーン:性別選択、データベースのクエリ結果
例:ショッピングリストを表す
goods=('牛乳'、'運動靴'、'コーヒー'、'携帯電話'、'羊肉'、'ぶどう'、'オレンジ')
# 例
# タプルは丸括弧内でカンマで区切られたアイテムで定義されます
>>> a = ()
>>> type(a)
<class 'tuple'>
>>> a = (1) # 注:括弧は集合を表すこともできます
>>> type(a)
<class 'int'>
# タプルに1つの要素しかない場合、要素の後にカンマを追加して、この括弧が集合を表すのかタプルを表すのかを区別する必要があります
>>> a = (1,) # 注:タプルに1つの要素しかない場合、カンマ(,)を追加してタプルを示す必要があります
>>> type(a)
<class 'tuple'>
>>> a = tuple() # 注:空のタプルを定義
>>> type(a)
<class 'tuple'>
>>> a
()
# タプルにはPythonの任意のオブジェクトを格納できます
>>> a = ("a",1,1.2,True,print)
>>> a
('a', 1, 1.2, True, <built-in function print>)
タプルの基本操作#
インデックス#
インデックスを使用してリスト内の要素にアクセスします。インデックスは 0 から始まり、1 つの要素を取得できます。
# 例
>>> a = ("a",1,1.2,True,print)
>>> a[4]
<built-in function print>
>>> a[3]
True
# インデックスは範囲外にできません、範囲外の場合はエラーが発生します
>>> a = ("a",1,1.2,True,print)
>>> a[5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
スライス#
スライスはインデックスを使用してタプル内の要素にアクセスし、サブタプルを取得できます
開始と終了の範囲:[start,end)
ステップ:デフォルト=>1
start:デフォルト=>ステップが正の場合、startは0;ステップが負の場合、startは-1
end:デフォルト=>ステップが正の場合、endはタプルの末尾;ステップが負の場合、endはタプルの開始
注意:3つの値はすべてオプションです
# 例
>>> a = ("a",1,1.2,True,print)
>>> a[1:3]
(1, 1.2)
不可変性#
# 例
>>> a
('a', 1, 1.2, True, <built-in function print>)
>>> a[0] = 1 # 注:エラーが発生します
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> tu1 = (1,2)
>>> tu2 = (3,4)
>>> tu3 = tu1 + tu2
>>> tu3
(1, 2, 3, 4)
統計#
# 例
>>> a = ('a','b','c')
>>> print(len(a))
3
繰り返し#
# 例
>>> a = [1,2,3]
>>> for i in enumerate(a):
... print(i)
...
(0, 1) # 注:戻り値はタプルです
(1, 2)
(2, 3)
>>> for i,j in enumerate(a):
... print(f"{i}---{j}") # 注:2つのパラメータを使って戻り値を取得
...
0---1
1---2
2---3
メンバーシップの判断#
メンバーシップ: in , not in
# 例
>>> a = ("a","b","c")
>>> "a" in a
True
>>> "d" not in a
True
三。辞書(dict)#
辞書はPythonにおけるキーと値のマッピングデータ構造です
辞書は無秩序です
辞書は可変オブジェクトです
キーは一意でなければならず、したがって自動的に重複を排除します
例:
singer={key1:value,key2:value}
singer={"李聖傑":'痴心絶対','張韶涵':'阿刁','汪峰':'普通ディスコ'}
辞書の定義
辞書のキーはハッシュ可能なオブジェクトでなければなりません
Pythonのすべての文字列、数字、タプル、ブール値、Noneはハッシュ可能なオブジェクトです
辞書の値は任意の値を持つことができます
# 例
# 空の辞書を定義
# 方法1:
>>> a = {} # 注:空の辞書を定義
# 方法2:
>>> b = dict() # 注:空の辞書を定義、ファクトリ関数
>>> type(a)
<class 'dict'>
>>> type(b)
<class 'dict'>
# 例
>>> c = [('root','123456'),('admin','admin')]
>>> d = dict(c) # 注:リストを辞書に変換するファクトリ関数
>>> d
{'root': '123456', 'admin': 'admin'}
>>> e = [1,2,3]
>>> e
[1, 2, 3]
>>> dict(e) # 注:変換するオブジェクトはキーと値のマッピング形式でなければなりません
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot convert dictionary update sequence element #0 to a sequence
辞書の基本操作#
値の取得#
用法1:dicts[key]=>キーが存在しない場合、KeyErrorエラーが発生します
用法2:dicts.get(key,default)=>キーが存在しない場合、default値を返します
# 例
>>> a = {"a":4,"b":2}
>>> a['a']=3 # 注:キー="a"の値を変更
>>> a
{'a': 3, 'b': 2}
>>> a['c']=4 # 注:キーと値のペアを追加
>>> a
{'a': 3, 'b': 2, 'c': 4}
>>> a['c'] # 注:値を取得
4
>>> a['d'] # 注:キーが存在しない場合、エラーが発生します
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'd'
# 推奨使用get
>>> a
{'a': 3, 'b': 2, 'c': 4}
>>> a.get('d') # 注:エラーが発生しません
>>> c = a.get('d')
>>> print(c)
None # 注:デフォルト値が設定されていません
追加 / 修正#
用法:dicts[key]=value
キーが存在しない場合、キーと値のペアを追加します
キーが存在する場合、対応する値を修正します
# 例:修正
>>> a
{'a': 3, 'b': 2, 'c': 4}
>>> a['a'] = 5
>>> a
{'a': 5, 'b': 2, 'c': 4}
# 例:追加
>>> a['d'] = False
>>> a
{'a': 5, 'b': 2, 'c': 4, 'd': False}
削除#
用法1:dicts.pop(key)
用法2:dicts.popitem()
# 例:dicts.pop(key)
>>> a = {'a':5,'b':2,'c':4,'d':False}
>>> a.pop('a') # 注:キー='a'の要素を削除
5 # 注:popには戻り値があります
>>> c = a.pop('b') # 注:戻り値を取得
>>> c
2
>>> a
{'c': 4, 'd': False}
# 例:dicts.popitem()
# Python3では最後の要素が削除されます
>>> a = {"x":1,"y":2,"z":3}
>>> a.popitem()
('z', 3)
>>> a.popitem()
('y', 2)
>>> a.popitem()
('x', 1)
マージ#
用法1:dict1.update(dict2)=>dict2をdict1にマージします
用法2:dict(dict1,**dict2)=>dict1とdict2をマージして新しい辞書を生成します
# 例:dict1.update(dict2)
>>> a = {"x":1,"y":3}
>>> b = {"q":2,"w":3}
>>> a.update(b) # 注:aの自動的な属性
>>> a
{'x': 1, 'y': 3, 'q': 2, 'w': 3}
>>> b
{'q': 2, 'w': 3}
# 例:dict(dict1, **dict2)
>>> a = {"x":1,"y":3}
>>> b = {"q":2,"w":3}
>>> dict(a,**b) # 注:ファクトリ関数、辞書を返します aとbのマージ
{'x': 1, 'y': 3, 'q': 2, 'w': 3}
>>> a # 注:a自体は変更されません
{'x': 1, 'y': 3}
>>> dict()
{}
>>> c = dict(a,**b)
>>> c
{'x': 1, 'y': 3, 'q': 2, 'w': 3}
メンバーシップ#
用法:
item in dicts
item not in dicts
# 例
>>> a = {"x":1,"y":2,"z":3}
>>> a
{'x': 1, 'y': 2, 'z': 3}
>>> 'x' in a # 注:inはデフォルトでキーを比較します
True
>>> 2 in a
False
>>> 2 in a.values() # 注:a.values()は値を比較します
True
繰り返し#
デフォルトではキーを繰り返します
# 例
>>> a
{'x': 1, 'y': 2, 'z': 3}
# キーの値を繰り返す
>>> for i in a:
... print(i)
...
x # 注:キーの値を繰り返します
y
z
# 値の値を繰り返す
>>> for i in a.values():
... print(i)
...
1 # 注:値の値を繰り返します
2
3
# キーも値も取得したい場合
# itemsはタプルを返します
# 方法1
>>> for i in a.items():
... print(i)
...
('x', 1)
('y', 2)
('z', 3)
# 方法2
>>> for i,j in a.items(): # 注:2つのパラメータで戻り値を取得しますキー、値
... print(f"key is {i}, value is {j}")
...
key is x, value is 1
key is y, value is 2
key is z, value is 3
# 方法3
>>> for i in a.items():
... print(f"key is {i[0]}, value is {i[1]}") # 注:インデックスでパラメータを取得します
...
key is x, value is 1
key is y, value is 2
key is z, value is 3
四。集合(set)#
集合は無秩序で、重複しないデータの組み合わせです
集合はキーのみを含む辞書です
集合の用途
重複排除:リストを集合に変換すると、自動的に重複が排除されます
関係テスト:2つのデータセット間の交差、差、和などの関係をテストします
例:
singer={"李聖傑",'張韶涵','汪峰'}
集合の定義
集合は波括弧内で、各要素はカンマで区切られます
集合の要素はハッシュ可能なオブジェクトでなければなりません、辞書と同様です
setとdictの唯一の違いは、対応する値を保存しないことです
# 例
# 空の集合を定義(2つの方法)
>>> a = {1,2,3} # 注:最初の方法
>>> type(a)
<class 'set'>
>>> a = set() # 注:2番目の方法
>>> a
set()
>>> type(a)
<class 'set'>
集合の基本操作#
追加#
用法:s.add(item)=>1つのアイテムを追加します
用法:s.update(someitems)=>複数のアイテムを追加します
# 例
>>> s = {1,2,3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.update("str") # 注:strは1つずつ拡張されます
>>> s
{1, 2, 3, 4, 't', 'r', 's'}
>>> s.update({"x":1,"y":2}) # 注:辞書はキーを拡張します
>>> s
{1, 2, 3, 4, 'x', 't', 'y', 'r', 's'}
削除#
用法1:s.remove(item)=>1つのアイテムを削除します(アイテムが存在しない場合はKeyErrorが発生します)
用法2:s.discard(item)=>1つのアイテムを削除します(アイテムが存在しない場合は何もしません)
# 例
# remove
>>> s
{1, 2, 3, 4, 'x', 't', 'y', 'r', 's'}
>>> s.remove('r')
>>> s
{1, 2, 3, 4, 'x', 't', 'y', 's'}
>>> s.remove('p') # 注:'p'が存在しない場合、エラーが発生します
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'p'
# discard
>>> s
{1, 2, 3, 4, 'x', 't', 'y', 's'}
>>> s.discard('o') # 注:存在しない場合はエラーが発生せず、何もしません
>>> s.discard('x')
>>> s
{1, 2, 3, 4, 't', 'y', 's'}
# pop
>>> a={"a","b","c"}
>>> a.pop()
'c'
>>> a.pop()
'a'
>>> a.pop()
'b'
集合操作#
和:tとsの和、sとtの各要素を含む新しいsetを返します
交差:tとsの交差、sとtの共通要素を含む新しいsetを返します
差:sに存在し、tには存在しない要素を含む新しいsetを返します
対称差:sとtの重複しない要素を含む新しいsetを返します(tまたはsに存在しますが、両方には同時に存在しません)
# 例
# 集合を作成
>>> set('hello')
{'e', 'o', 'l', 'h'}
# 和
>>> s1 = {1,2,3}
>>> s2 = {2,3,4}
>>> s1 | s2
{1, 2, 3, 4}
>>> s1.union(s2)
{1, 2, 3, 4}
# 交差
>>> s1 = {1,2,3}
>>> s2 = {2,3,4}
>>> s1 & s2
{2, 3}
>>> s1.intersection(s2)
{2, 3}
# 差
>>> s1 = {1,2,3}
>>> s2 = {2,3,4}
>>> s1 - s2
{1}
# 注:s1にあるが、s2にはない
>>> s2 - s1
{4}
# 対称差
>>> s1 = {1,2,3}
>>> s2 = {2,3,4}
>>> s1 ^ s2
{1, 4}
# 注:交差部分を除いた部分