-1

为了使用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'
4

7 回答 7

7

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

于 2013-07-10T04:19:55.317 回答
5
>>> x = "hello"
>>> y = list(x)
>>> y
['h', 'e', 'l', 'l', 'o']
>>> ''.join(y)
'hello'
于 2013-07-10T04:20:18.397 回答
4

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

 >>> x = ['x', 'y', 'z']
 >>> y = "".join(x)
 >>> y
 'xyz'
于 2013-07-10T04:19:41.080 回答
4

Python 字符串连接可以解决问题。

>>> ''.join(y)
'xyz'
于 2013-07-10T04:20:05.313 回答
4
>>> x = 'abc'
>>> y = list(x)
>>> y
['a', 'b', 'c']
>>> ''.join(y)
'abc'
>>> 

并且使用random.choice,您无需将字符串解析为列表,字符串本身就是一个序列:

>>> random.choice('abc')
'c'
>>> random.choice('abc')
'a'
>>> 
于 2013-07-10T04:22:17.720 回答
3

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

x = 'abcde'
y = [random.choice(x) for i in range(5)]
print y
于 2013-07-10T04:22:34.157 回答
2

使用连接:

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

即,这颠倒了将列表构造函数应用于字符串的操作:

>>> ''.join(list('hello'))
'hello'
于 2013-07-10T04:19:32.183 回答