【问题标题】:How do I create a Python set with only one element?如何创建只有一个元素的 Python 集?
【发布时间】:2013-11-14 18:11:31
【问题描述】:

如果我有一个字符串,并且想要创建一个最初包含 该字符串的集合,是否有比以下更 Pythonic 的方法?

mySet = set()
mySet.add(myString)

下面是myString中的一组字母:

mySet = set(myString)

【问题讨论】:

    标签: python python-3.x set


    【解决方案1】:

    在 2.7 和 3.x 中,您可以使用:

    mySet = {'abc'}
    

    【讨论】:

    • 一般来说,表达式x, 创建一个包含一个元素的元组 (x) - 它是一个构成元组的逗号,而不是括号。 x,(x,) 相同。
    • @TimPeters 是的,但这不适用于集合。
    【解决方案2】:

    例如,这个简单的方法:

    mySet = set([myString])
    

    【讨论】:

      【解决方案3】:

      For 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'])
      

      【讨论】:

        【解决方案4】:

        set(obj) 将遍历obj 并将所有唯一元素添加到集合中。由于字符串也是可迭代的,如果您将字符串传递给set(),那么您将获得集合中的唯一字母。你可以先把你的 obj 放到一个列表中:

        set(["mystring"])
        

        但是,这不是优雅的 IMO。你知道,即使是创建一个空字典,我们更喜欢{} 而不是dict()。同样在这里。我会使用以下语法:

        myset = {"mystring"}
        

        注意,对于元组,后面需要一个逗号:

        mytuple = ("mystring",)
        

        【讨论】:

          【解决方案5】:

          如果集合也不太可能更改,请考虑使用frozenset

          mySet = frozenset([myString])
          

          【讨论】:

            【解决方案6】:

            使用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)
            

            【讨论】:

              猜你喜欢
              • 2012-10-04
              • 2018-07-15
              • 2014-01-21
              • 2020-12-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多