文字列、タプル、rangeなどから集合を作成する

広告
eyecatch

集合型の set 型および frozenset 型はコンストラクタの引数に文字列、タプル、 range を指定してオブジェクトを作成することができます。ここでは文字列、タプル、 range などから集合を作成する方法について解説します。

イテラブルなオブジェクトから集合を作成する

集合型のコンストラクタには引数にイテラブルなオブジェクトを指定して集合のオブジェクトを作成するものがあります。

class set([iterable])
class frozenset([iterable])

イテラブルなオブジェクトとはリストやタプル、文字列、辞書などです。

文字列から集合を作成する

最初に文字列を引数に指定して set 型のオブジェクトを作成してみます。

>>> myset = set("Hello Python")
>>> print(myset)
{'P', 'h', 'l', 'y', 'n', 'o', 'H', ' ', 't', 'e'}
>>>

引数に指定した文字列の 1 文字毎に 1 つの要素とした新しい集合が作成されました。注意点として集合は要素に順序というものがありませんので、要素がどのような順番で並んでいるのかは分かりません。また集合では同じ値の要素は 1 つしいか持てないため、同じ値の要素は 1 つにまとめられます。

同じように文字列を引数に指定して frozenset 型のオブジェクトを作成してみます。

>>> myfrozenset = frozenset("Hello Python")
>>> print(myfrozenset)
frozenset({'P', 'h', 'l', 'y', 'n', 'o', 'H', ' ', 't', 'e'})
>>>

set 型と同じようにオブジェクトが作成されました。

リストから集合を作成する

次にリストを引数に指定して set 型および frozenset 型のオブジェクトを作成してみます。

>>> mylist = ["A", "B", "C"]
>>> myset = set(mylist)
>>> print(myset)
{'B', 'C', 'A'}
>>>
>>> myfrozenset = frozenset(mylist)
>>> print(myfrozenset)
frozenset({'B', 'C', 'A'})
>>>

引数に指定したリストと同じ要素を持つ集合が作成されました。

タプルから集合を作成する

次にタプルを引数に指定して set 型および frozenset 型のオブジェクトを作成してみます。

>>> mytuple = ("A", "B", "C")
>>> myset = set(mytuple)
>>> print(myset)
{'B', 'C', 'A'}
>>>
>>> myfrozenset = frozenset(mytuple)
>>> print(myfrozenset)
frozenset({'B', 'C', 'A'})
>>>

引数に指定したタプルと同じ要素を持つ集合が作成されました。

rangeから集合を作成する

range 型はコンストラクタで引数に指定した開始数から終了数までの連続した数値を持つオブジェクトです。

class range(stop)
class range(start, stop[, step])

start から stop までの連続した数値を要素として持ちます。 start を省略した場合は 0 が開始数です。

※ range 型について詳しくは「range関数の使い方(開始から終了までの連続した数値を要素として持つrange型オブジェクトを作成する)」を参照されてください。

range 型のオブジェクトを引数に指定して set 型および frozenset 型のオブジェクトを作成してみます。

>>> myset = set(range(10))
>>> print(myset)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>>
>>> myfrozenset = frozenset(range(10))
>>> print(myfrozenset)
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
>>>

0 から 9 までの連続した数値を要素として持つ辞書を作成することができました。

-- --

文字列やタプル、 range など他のオブジェクトから集合を作成する方法を解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。