2013-07-10 181 views
0

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

回答

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

使用加入:

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

即,反转应用列表构造什么呢字符串:

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

请问为什么要投票? – dawg

+0

我没有做downvote,但我注意到@MattBryant也有一个downvote和你的两个帖子是唯一两个直接定义列表,而不是从一个字符串生成它们......也许有人*真*不比如直接创建字符列表? – SethMMorton

4

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

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

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

4

Python字符串join有窍门。

>>> ''.join(y) 
'xyz' 
4
>>> x = 'abc' 
>>> y = list(x) 
>>> y 
['a', 'b', 'c'] 
>>> ''.join(y) 
'abc' 
>>> 

,并使用random.choice,没有必要为你解析字符串列表时,字符串本身是一个序列:

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

虽然一些这些答案正确地回答将列表转换为字符串的问题,我会注意到你的实际问题是你想对一个字符串使用random.choice(),并且希望先将它转换为一个列表。你不需要这么做 - random.choice()会采取任何顺序,包括一个字符串。

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

这会更容易,但是我需要'list'的'insert','remove','index'等,并且string - > list - >字符串在这种情况下值得额外的步骤。 – tkbx