文字列があり、最初にその文字列のみを含むセットを作成したい場合、次よりも Pythonic なアプローチはありますか?
mySet = set()
mySet.add(myString)
以下は、 の一連の文字を示していますmyString
。
mySet = set(myString)
文字列があり、最初にその文字列のみを含むセットを作成したい場合、次よりも Pythonic なアプローチはありますか?
mySet = set()
mySet.add(myString)
以下は、 の一連の文字を示していますmyString
。
mySet = set(myString)
たとえば、この簡単な方法:
mySet = set([myString])
set_display ::= "{" (expression_list | comprehension) "}"
例:
>>> myString = 'foobar'
>>> s = {myString}
>>> s
set(['foobar'])
>>> s = {'spam'}
>>> s
set(['spam'])
空{}
は ではなく、set
であることに注意してくださいdict
。
ヘルプset
:
class set(object)
| set() -> new empty set object
| set(iterable) -> new set object
ご覧set()
のとおり、反復可能で文字列も反復可能であるため、文字列の文字をセットに変換します。
文字列をイテラブルに入れて、に渡しますset()
:
>>> set(('foo',)) #tuple
set(['foo'])
>>> set(['foo']) #list
set(['foo'])
セットも変更される可能性が低い場合は、次の使用を検討してfrozenset
ください。
mySet = frozenset([myString])
使用するmySet = {mystring}
Python 3.6.9 (default, Sep 24 2019, 14:35:19)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: def s(i):
...: r = set()
...: r.add(i)
...: return r
...:
In [2]: %timeit s(1234)
218 ns ± 5.99 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [3]: %timeit set([1234])
201 ns ± 3 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [4]: %timeit {1234}
51.7 ns ± 1.7 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)