【问题标题】:Converting list to string? [duplicate]将列表转换为字符串? [复制]
【发布时间】:2013-07-07 21:28:00
【问题描述】:

为了使用random.choice(),我必须将我的字符串转换为列表:

>>> x = "hello"
>>> y = list(x)
>>> y
['h', 'e', 'l', 'l', 'o']

但是尝试反向执行此操作会产生一个实际上看起来像 ['h', 'e', 'l', 'l', 'o'] 而不仅仅是 hello 的字符串。重复执行此操作会导致无限循环,生成如下所示的字符串:

"'", '"', ',', ' ', "'", ',', "'", ',', ' ', "'", ' ', "'", ',', ' ', "'", '"', "'", ',', ' ', '"', "'", '"', ',', ' ', "'", '"', "'", ',', ' ', "'", ',', "'", ',', ' ', "'", ' ', "'", ',', ' ', '"', "'", '"', ',', ' ', "'", ',', "'", ',', ' ', '"', "'", '"', ',', ' ', "'", ',', "'", ',', ' ', "'", ' ', "'", ',', ' '

等等。

那么,如何将列表转换回字符串:

>>> x = ['x', 'y', 'z']
>>> y = something(x)
>>> y
'xyz'

【问题讨论】:

    标签: python


    【解决方案1】:

    "".join (x) 会很容易做到。

    【讨论】:

      【解决方案2】:
      >>> x = "hello"
      >>> y = list(x)
      >>> y
      ['h', 'e', 'l', 'l', 'o']
      >>> ''.join(y)
      'hello'
      

      【讨论】:

        【解决方案3】:

        要在 python 中将列表转换为您想要的字符串,您可以使用string.join 运算符。

         >>> x = ['x', 'y', 'z']
         >>> y = "".join(x)
         >>> y
         'xyz'
        

        【讨论】:

          【解决方案4】:

          Python 字符串 join 可以解决问题。

          >>> ''.join(y)
          'xyz'
          

          【讨论】:

            【解决方案5】:
            >>> x = 'abc'
            >>> y = list(x)
            >>> y
            ['a', 'b', 'c']
            >>> ''.join(y)
            'abc'
            >>> 
            

            而使用random.choice,就不需要你解析字符串来列出了,字符串本身就是一个序列:

            >>> random.choice('abc')
            'c'
            >>> random.choice('abc')
            'a'
            >>> 
            

            【讨论】:

              【解决方案6】:

              虽然其中几个答案正确回答了将列表转换为字符串的问题,但我会注意到您的实际问题是您想在字符串上使用 random.choice() 并希望先将其转换为列表.你不需要这样做——random.choice() 接受任何序列,包括字符串。

              x = 'abcde'
              y = [random.choice(x) for i in range(5)]
              print y
              

              【讨论】:

              • 那会更容易,但我需要 listinsertremoveindex 等,并且字符串 --> 列表 --> 字符串最终值得在这种情况下需要额外的步骤。
              【解决方案7】:

              使用连接:

              >>> li=['h', 'e', 'l', 'l', 'o']
              >>> print ''.join(li)
              

              即,这与将列表构造函数应用于字符串的操作相反:

              >>> ''.join(list('hello'))
              'hello'
              

              【讨论】:

              • 请问为什么投反对票?
              • 我没有投反对票,但我注意到@MattBryant 也投反对票,而您的两个帖子是唯一直接定义列表而不是从字符串生成它们的两个帖子...也许有人真的不喜欢直接创建字符列表?
              猜你喜欢
              • 2012-05-23
              • 2013-09-20
              • 2015-08-01
              • 1970-01-01
              • 2011-02-08
              • 2019-10-16
              • 2021-06-11
              相关资源
              最近更新 更多