63

文字列があり、最初にその文字列のみを含むセットを作成したい場合、次よりも Pythonic なアプローチはありますか?

mySet = set()
mySet.add(myString)

以下は、 の一連の文字を示していますmyString

mySet = set(myString)
4

6 に答える 6

24

たとえば、この簡単な方法:

mySet = set([myString])
于 2013-11-14T18:12:35.920 に答える
6

Python2.7+ の場合:

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'])
于 2013-11-14T18:12:39.810 に答える
0

セットも変更される可能性が低い場合は、次の使用を検討してfrozensetください。

mySet = frozenset([myString])
于 2013-11-14T18:14:15.413 に答える
0

使用する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)
于 2020-01-24T00:07:53.587 に答える